trailblazer-developer 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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