trailblazer-developer 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2c8a254986c9786c115dc449f613827d7a150b45c6c70450cd64b6737f050835
4
- data.tar.gz: 5cb310e85b4fd1445a502e169272627df7ffb4140adaf839f8528da3b0a56b69
3
+ metadata.gz: e6a577980533d74f29b616b2b5d3d85026a8d7ca20f096a9d9af463e30994fe3
4
+ data.tar.gz: '03894756cc87b350bd9d0c71ee7c22cc951e7302869e20a95c8facd21d585c84'
5
5
  SHA512:
6
- metadata.gz: 47855c140e29e0aede4c005daee72119b92e51da2260216a6dc6d2d97cb46b6e7f912441114133addd7b4ad21deaccb388e7182485026a4cff98aa2386c76590
7
- data.tar.gz: '097c4814f05456c2e69762b0c324b070b0ba1e5b269f21a9c4f8d8dd82f5ab8889151851e6df1ebbb1de95319dc5e1363a135c71d39a4ebf0956c26b88a2eff0'
6
+ metadata.gz: b03caa6b40f5e45acc588999dc43b891b9f0f4d9ced50261acbe3919c1d89d4feb24c7ba9a4dd7924b10f72b87fb32d775d8a1ed000d8a6dea33da02b15fd5b6
7
+ data.tar.gz: 6a8aa191f8132ffb968cdf0256985a4bbc5ea916a6240d94baac3a50a621e8b9a0b8e38aec84cf4ba336f32cecdafa5c31bd1a271da2074ce32c64d09e778e72
@@ -1,3 +1,7 @@
1
+ # 0.0.10
2
+
3
+ * Make Generate::Pipeline an activity for better customization/extendability.
4
+
1
5
  # 0.0.9
2
6
 
3
7
  * `Render.strip` is now a class method.
@@ -1,4 +1,5 @@
1
1
  require "representable/hash"
2
+ require "trailblazer/activity/dsl/linear" # Railway.
2
3
 
3
4
  module Trailblazer
4
5
  module Developer
@@ -30,21 +31,19 @@ module Trailblazer
30
31
  end
31
32
 
32
33
  def call(hash)
33
- elements = transform_from_hash(hash)
34
-
35
- compute_intermediate(elements)
34
+ signal, (ctx, _) = Activity::TaskWrap.invoke(Pipeline, hash: hash)
35
+ ctx[:intermediate]
36
36
  end
37
37
 
38
- def transform_from_hash(hash, parser: Representer::Activity)
39
- parser.new(OpenStruct.new).from_hash(hash).elements
38
+ def transform_from_hash(ctx, hash:, parser: Representer::Activity, **)
39
+ ctx[:elements] = parser.new(OpenStruct.new).from_hash(hash).elements
40
40
  end
41
41
 
42
- def find_start_events(elements)
43
- elements.find_all { |el| el.type == "Event" }
42
+ def find_start_events(ctx, elements:, **)
43
+ ctx[:start_events] = elements.find_all { |el| el.type == "Event" }
44
44
  end
45
45
 
46
- def compute_intermediate(elements, find_start_events: method(:find_start_events))
47
- start_events = find_start_events.(elements)
46
+ def compute_intermediate(ctx, elements:, start_events:, **)
48
47
  end_events = elements.find_all { |el| el.type == "EndEventTerminate" } # DISCUSS: is it really called TERMINATE?
49
48
 
50
49
  inter = Activity::Schema::Intermediate
@@ -66,7 +65,7 @@ module Trailblazer
66
65
  ])
67
66
  # pp wiring
68
67
 
69
- inter.new(wiring, end_events.collect(&:id), start_events.collect(&:id))
68
+ ctx[:intermediate] = inter.new(wiring, end_events.collect(&:id), start_events.collect(&:id))
70
69
  end
71
70
 
72
71
  # private
@@ -86,6 +85,12 @@ module Trailblazer
86
85
  def extract_semantic(label)
87
86
  label.to_sym
88
87
  end
88
+
89
+ class Pipeline < Trailblazer::Activity::Railway
90
+ step Generate.method(:transform_from_hash), id: :transform_from_hash
91
+ step Generate.method(:find_start_events), id: :find_start_events
92
+ step Generate.method(:compute_intermediate), id: :compute_intermediate
93
+ end
89
94
  end
90
95
  end
91
96
  end
@@ -1,7 +1,7 @@
1
1
  module Trailblazer
2
2
  module Version
3
3
  module Developer
4
- VERSION = "0.0.9"
4
+ VERSION = "0.0.10"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-developer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-31 00:00:00.000000000 Z
11
+ date: 2019-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -147,7 +147,6 @@ files:
147
147
  - gems.local.rb
148
148
  - lib/trailblazer/developer.rb
149
149
  - lib/trailblazer/developer/CHANGES.md
150
- - lib/trailblazer/developer/activity.rb
151
150
  - lib/trailblazer/developer/client.rb
152
151
  - lib/trailblazer/developer/generate.rb
153
152
  - lib/trailblazer/developer/render/circuit.rb
@@ -1,51 +0,0 @@
1
- module Trailblazer
2
- module Developer
3
- # Transforms an {Activity::Graph} into an abstract data structure that represents the graph via a
4
- # well-defined API. The goal is to decouple graph internals from the presentation layer.
5
- # The {Model} is usually passed into Renderer and Layouter, to render the bpmn:Diagram XML or JSON.
6
- #
7
- # It returns {Model} with {Task}s and {Flow}s.
8
- module Activity
9
- module Graph
10
- class << self
11
- Model = Struct.new(:id, :start_events, :end_events, :task, :sequence_flow)
12
- Task = Struct.new(:id, :name, :options, :incoming, :outgoing)
13
- # DISCUSS: direction ATM is the "condition" for the BPMN rendering.
14
- Flow = Struct.new(:id, :sourceRef, :targetRef, :direction)
15
-
16
- # @param Graph an object implementing the Activity::Graph interface
17
- # @return Model Generic representation of the graph, ready for rendering.
18
- def self.to_model(graph, id: "some-process") # rubocop:disable Metrics/AbcSize
19
- start_events = graph.find_all("Start.default") # FIXME. this is a static assumption.
20
- end_events = graph.find_all { |node| graph.successors(node).size.zero? }
21
- tasks = graph.find_all { |_node| true }
22
- tasks -= start_events
23
- tasks -= end_events
24
-
25
- # transform nodes into BPMN elements.
26
- start_events = start_events.collect do |evt|
27
- Task.new(evt[:id], evt[:id], evt, Incomings(graph, evt), Outgoings(graph, evt))
28
- end
29
- end_events = end_events.collect do |evt|
30
- Task.new(evt[:id], evt[:id], evt, Incomings(graph, evt), Outgoings(graph, evt))
31
- end
32
- tasks = tasks.collect { |evt| Task.new(evt[:id], evt[:id], evt, Incomings(graph, evt), Outgoings(graph, evt)) }
33
- edges = (start_events + end_events + tasks).collect { |task| [task.incoming, task.outgoing] }.flatten(2).uniq
34
-
35
- Model.new(id, start_events, end_events, tasks, edges)
36
- end
37
-
38
- private
39
-
40
- def Outgoings(graph, source)
41
- graph.successors(source).collect { |target, edge| Flow.new(edge[:id], source[:id], target[:id], edge[:_wrapped]) }
42
- end
43
-
44
- def Incomings(graph, target)
45
- graph.predecessors(target).collect { |source, edge| Flow.new(edge[:id], source[:id], target[:id], edge[:_wrapped]) }
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end