trailblazer-developer 0.0.23 → 0.0.24
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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/CHANGES.md +5 -1
- data/Gemfile +2 -1
- data/README.md +8 -5
- data/lib/trailblazer/developer/render/linear.rb +4 -4
- data/lib/trailblazer/developer/trace.rb +9 -3
- data/lib/trailblazer/developer/version.rb +1 -1
- data/trailblazer-developer.gemspec +1 -2
- metadata +6 -27
- data/lib/trailblazer/diagram/bpmn.rb +0 -338
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23a6eb4a9f753e270064c377f75c08045ffcfffe1ee4643c82b52a59df0e38c6
|
4
|
+
data.tar.gz: 48f8e2b81baff35b7545deb747fa50e09dea67ea4eca1c55af5566a04edf917d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ec36ea0cfe3b6bafe10ab4029651dfa13db4557bad3fd121fae6e1d28629551f1d747793ad93f95a20a7eabc918254e929ce53eaac7337eb9a3d5db255961da
|
7
|
+
data.tar.gz: 3586db8c45fe02f4ccb99199690916e1ac6f208afe0a9f2a2d12bf5dcccccaae2b20bc65da32ef830bf39661276899fc94e4d5250879c7e02af3a2658be96e7d
|
data/.github/workflows/ci.yml
CHANGED
@@ -6,7 +6,7 @@ jobs:
|
|
6
6
|
fail-fast: false
|
7
7
|
matrix:
|
8
8
|
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
9
|
-
ruby: [2.5, 2.6, 2.7, '3.0', head, jruby
|
9
|
+
ruby: [2.5, 2.6, 2.7, '3.0', head, jruby]
|
10
10
|
runs-on: ubuntu-latest
|
11
11
|
steps:
|
12
12
|
- uses: actions/checkout@v2
|
data/CHANGES.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
# 0.0.24
|
2
|
+
|
3
|
+
* Use `trailblazer-activity-dsl-linear` >= 1.0.
|
4
|
+
|
1
5
|
# 0.0.23
|
2
6
|
|
3
7
|
* Remove `representable` dependency.
|
4
|
-
* Moved all editor-specific code to the `pro` gem.
|
8
|
+
* Moved all editor-specific code to the `pro` gem (`client.rb` and `generate.rb`).
|
5
9
|
|
6
10
|
# 0.0.22
|
7
11
|
|
data/Gemfile
CHANGED
@@ -6,4 +6,5 @@ gemspec
|
|
6
6
|
# gem "trailblazer-activity", ">= 0.7.1"
|
7
7
|
# gem "trailblazer-activity", path: "../trailblazer-activity"
|
8
8
|
# gem "trailblazer-activity-dsl-linear", path: "../trailblazer-activity-dsl-linear"
|
9
|
-
|
9
|
+
gem "trailblazer-activity-dsl-linear", github: "trailblazer/trailblazer-activity-dsl-linear"
|
10
|
+
gem "trailblazer-activity", github: "trailblazer/trailblazer-activity"
|
data/README.md
CHANGED
@@ -10,8 +10,11 @@ Find the complete documentation on the project website: [https://trailblazer.to/
|
|
10
10
|
|
11
11
|
The `developer` gem provides the following neat tools.
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
## `wtf?` mode™
|
14
|
+
|
15
|
+
Run an activity and see its flow on the command line. Or - run a _broken_ activity and trace where an exception happened.
|
16
|
+
|
17
|
+

|
18
|
+
|
19
|
+
|
20
|
+
## Quick rendering of activities, including their taskWraps.
|
@@ -6,15 +6,15 @@ module Trailblazer
|
|
6
6
|
# NOTE: this is absolutely to be considered as prototyping and acts more like a test helper ATM as
|
7
7
|
|
8
8
|
module Developer
|
9
|
-
def self.railway(*args)
|
10
|
-
Render::Linear.(*args)
|
9
|
+
def self.railway(*args, **kws)
|
10
|
+
Render::Linear.(*args, **kws)
|
11
11
|
end
|
12
12
|
|
13
13
|
module Render
|
14
14
|
module Linear
|
15
15
|
module_function
|
16
16
|
|
17
|
-
def call(operation,
|
17
|
+
def call(operation, style: :line)
|
18
18
|
graph = Activity::Introspect::Graph(operation)
|
19
19
|
|
20
20
|
rows = graph.collect do |node, i|
|
@@ -27,7 +27,7 @@ module Trailblazer
|
|
27
27
|
|
28
28
|
rows = rows[1..-1] # remove start
|
29
29
|
|
30
|
-
return inspect_line(rows) if
|
30
|
+
return inspect_line(rows) if style == :line
|
31
31
|
|
32
32
|
return inspect_rows(rows)
|
33
33
|
end
|
@@ -43,9 +43,15 @@ module Trailblazer::Developer
|
|
43
43
|
#
|
44
44
|
# @private
|
45
45
|
def merge_plan
|
46
|
-
Activity::TaskWrap::
|
47
|
-
|
48
|
-
|
46
|
+
Activity::TaskWrap::Extension.new(
|
47
|
+
{
|
48
|
+
insert: [Activity::Adds::Insert.method(:Prepend), "task_wrap.call_task"],
|
49
|
+
row: Activity::TaskWrap::Pipeline.Row("task_wrap.capture_args", Trace.method(:capture_args))
|
50
|
+
},
|
51
|
+
{
|
52
|
+
insert: [Activity::Adds::Insert.method(:Append)], # append to the very end of tW.
|
53
|
+
row: Activity::TaskWrap::Pipeline.Row("task_wrap.capture_return", Trace.method(:capture_return))
|
54
|
+
},
|
49
55
|
)
|
50
56
|
end
|
51
57
|
|
@@ -23,7 +23,6 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "minitest-line"
|
24
24
|
spec.add_development_dependency "rake"
|
25
25
|
|
26
|
-
spec.add_dependency "trailblazer-activity", ">= 0.
|
27
|
-
spec.add_dependency "trailblazer-activity-dsl-linear", ">= 0.4.1", "< 1.0.0"
|
26
|
+
spec.add_dependency "trailblazer-activity-dsl-linear", ">= 1.0.0", "< 1.1.0"
|
28
27
|
spec.add_dependency "hirb"
|
29
28
|
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.
|
4
|
+
version: 0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sutterer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,46 +66,26 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: trailblazer-activity
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.12.2
|
76
|
-
- - "<"
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 1.0.0
|
79
|
-
type: :runtime
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 0.12.2
|
86
|
-
- - "<"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 1.0.0
|
89
69
|
- !ruby/object:Gem::Dependency
|
90
70
|
name: trailblazer-activity-dsl-linear
|
91
71
|
requirement: !ruby/object:Gem::Requirement
|
92
72
|
requirements:
|
93
73
|
- - ">="
|
94
74
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
75
|
+
version: 1.0.0
|
96
76
|
- - "<"
|
97
77
|
- !ruby/object:Gem::Version
|
98
|
-
version: 1.
|
78
|
+
version: 1.1.0
|
99
79
|
type: :runtime
|
100
80
|
prerelease: false
|
101
81
|
version_requirements: !ruby/object:Gem::Requirement
|
102
82
|
requirements:
|
103
83
|
- - ">="
|
104
84
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
85
|
+
version: 1.0.0
|
106
86
|
- - "<"
|
107
87
|
- !ruby/object:Gem::Version
|
108
|
-
version: 1.
|
88
|
+
version: 1.1.0
|
109
89
|
- !ruby/object:Gem::Dependency
|
110
90
|
name: hirb
|
111
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,7 +127,6 @@ files:
|
|
147
127
|
- lib/trailblazer/developer/version.rb
|
148
128
|
- lib/trailblazer/developer/wtf.rb
|
149
129
|
- lib/trailblazer/developer/wtf/renderer.rb
|
150
|
-
- lib/trailblazer/diagram/bpmn.rb
|
151
130
|
- trailblazer-developer.gemspec
|
152
131
|
homepage: http://trailblazer.to
|
153
132
|
licenses:
|
@@ -1,338 +0,0 @@
|
|
1
|
-
require "representable"
|
2
|
-
require "representable/xml"
|
3
|
-
|
4
|
-
require "trailblazer/developer/activity"
|
5
|
-
|
6
|
-
module Trailblazer
|
7
|
-
module Diagram
|
8
|
-
module BPMN # rubocop:disable Metrics/ModuleLength
|
9
|
-
Plane = Struct.new(:element, :shapes, :edges)
|
10
|
-
Shape = Struct.new(:id, :element, :bounds)
|
11
|
-
Edge = Struct.new(:id, :element, :waypoints)
|
12
|
-
Bounds = Struct.new(:x, :y, :width, :height)
|
13
|
-
Waypoint = Struct.new(:x, :y)
|
14
|
-
|
15
|
-
require "tsort"
|
16
|
-
# Helps sorting the tasks in a process "topologically", which is basically what the
|
17
|
-
# Sequence does for us, but this works for any kind of process.
|
18
|
-
# DISCUSS: should we work on the Model or Graph interface?
|
19
|
-
def self.topological_sort(model)
|
20
|
-
edges = {}
|
21
|
-
model.end_events.each { |task| edges[task.id] = {} }
|
22
|
-
model.sequence_flow.each do |edge|
|
23
|
-
edges[edge.sourceRef] ||= []
|
24
|
-
edges[edge.sourceRef] << edge.targetRef
|
25
|
-
end
|
26
|
-
|
27
|
-
# g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
|
28
|
-
each_node = ->(&b) { edges.each_key(&b) }
|
29
|
-
each_child = ->(n, &b) { edges[n].each(&b) }
|
30
|
-
TSort.tsort(each_node, each_child).reverse #=> [4, 2, 3, 1]
|
31
|
-
end
|
32
|
-
|
33
|
-
# FIXME: this should be called "linear layouter or something"
|
34
|
-
# Render an `Activity`'s circuit to a BPMN 2.0 XML `<process>` structure.
|
35
|
-
# @param activity Activity
|
36
|
-
# @param linear_task_ids [String] A list of task IDs that should be layouted sequentially in the provided order.
|
37
|
-
def self.to_xml(activity, linear_task_ids = nil) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
38
|
-
model = Trailblazer::Developer::Activity::Graph.to_model(activity.graph)
|
39
|
-
|
40
|
-
linear_task_ids ||= topological_sort(model)
|
41
|
-
|
42
|
-
# this layouter doesn't want End events in the linear part, we arrange them manually.
|
43
|
-
linear_task_ids -= model.end_events.map(&:id)
|
44
|
-
linear_task_ids -= model.start_events.map(&:id)
|
45
|
-
linear_tasks = linear_task_ids.collect do |id|
|
46
|
-
model.task.find { |task| task.id == id } || raise("task #{id} is not in model!")
|
47
|
-
end
|
48
|
-
|
49
|
-
start_x = 200
|
50
|
-
y_right = 200
|
51
|
-
y_left = 300
|
52
|
-
|
53
|
-
event_width = 54
|
54
|
-
|
55
|
-
shape_width = 81
|
56
|
-
shape_height = 54
|
57
|
-
shape_to_shape = 45
|
58
|
-
|
59
|
-
current = start_x
|
60
|
-
shapes = []
|
61
|
-
|
62
|
-
# add start.
|
63
|
-
shapes << Shape.new(
|
64
|
-
"Shape_#{model.start_events[0][:id]}",
|
65
|
-
model.start_events[0][:id],
|
66
|
-
Bounds.new(current, y_right, event_width, event_width)
|
67
|
-
)
|
68
|
-
current += event_width + shape_to_shape
|
69
|
-
|
70
|
-
# add tasks.
|
71
|
-
linear_tasks.each do |task|
|
72
|
-
is_right = %i[pass step].include?(task.options[:created_by])
|
73
|
-
|
74
|
-
shapes << Shape.new(
|
75
|
-
"Shape_#{task[:id]}",
|
76
|
-
task[:id],
|
77
|
-
Bounds.new(current, is_right ? y_right : y_left, shape_width, shape_height)
|
78
|
-
)
|
79
|
-
current += shape_width + shape_to_shape
|
80
|
-
end
|
81
|
-
|
82
|
-
# add ends.
|
83
|
-
horizontal_end_offset = 90
|
84
|
-
|
85
|
-
defaults = {
|
86
|
-
"End.success" => {y: y_right},
|
87
|
-
"End.failure" => {y: y_left},
|
88
|
-
"End.pass_fast" => {y: y_right - 90},
|
89
|
-
"End.fail_fast" => {y: y_left + 90}
|
90
|
-
}
|
91
|
-
|
92
|
-
success_end_events = []
|
93
|
-
failure_end_events = [] # rubocop:disable Lint/UselessAssignment
|
94
|
-
|
95
|
-
model.end_events.each do |evt|
|
96
|
-
id = evt[:id]
|
97
|
-
y = defaults[id] ? defaults[id][:y] : success_end_events.last + horizontal_end_offset
|
98
|
-
|
99
|
-
success_end_events << y
|
100
|
-
|
101
|
-
shapes << Shape.new("Shape_#{id}", id, Bounds.new(current, y, event_width, event_width))
|
102
|
-
end
|
103
|
-
|
104
|
-
edges = []
|
105
|
-
model.sequence_flow.each do |flow|
|
106
|
-
source = shapes.find { |shape| shape.id == "Shape_#{flow.sourceRef}" }.bounds
|
107
|
-
target = shapes.find { |shape| shape.id == "Shape_#{flow.targetRef}" }.bounds
|
108
|
-
|
109
|
-
edges << Edge.new("SequenceFlow_#{flow[:id]}", flow[:id], Path(source, target, target.x != current))
|
110
|
-
end
|
111
|
-
|
112
|
-
diagram = Struct.new(:plane).new(Plane.new(model.id, shapes, edges))
|
113
|
-
|
114
|
-
# render XML.
|
115
|
-
Representer::Definitions.new(Definitions.new(model, diagram)).to_xml
|
116
|
-
end
|
117
|
-
|
118
|
-
def self.Path(source, target, do_straight_line) # rubocop:disable Metrics/AbcSize
|
119
|
-
if source.y == target.y # --->
|
120
|
-
[Waypoint.new(*fromRight(source)), Waypoint.new(*toLeft(target))]
|
121
|
-
elsif do_straight_line
|
122
|
-
[Waypoint.new(*fromBottom(source)), Waypoint.new(*toLeft(target))]
|
123
|
-
elsif target.y > source.y # target below source.
|
124
|
-
[
|
125
|
-
l = Waypoint.new(*fromBottom(source)),
|
126
|
-
r = Waypoint.new(l.x, target.y + target.height / 2),
|
127
|
-
Waypoint.new(target.x, r.y)
|
128
|
-
]
|
129
|
-
else # target above source.
|
130
|
-
[l = Waypoint.new(*fromTop(source)), r = Waypoint.new(l.x, target.y + target.height / 2), Waypoint.new(target.x, r.y)]
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
def self.fromRight(left)
|
135
|
-
[left.x + left.width, left.y + left.height / 2]
|
136
|
-
end
|
137
|
-
|
138
|
-
def self.toLeft(bounds)
|
139
|
-
[bounds.x, bounds.y + bounds.height / 2]
|
140
|
-
end
|
141
|
-
|
142
|
-
def self.fromBottom(bounds)
|
143
|
-
[bounds.x + bounds.width / 2, bounds.y + bounds.height]
|
144
|
-
end
|
145
|
-
|
146
|
-
def self.fromTop(bounds)
|
147
|
-
[bounds.x + bounds.width / 2, bounds.y]
|
148
|
-
end
|
149
|
-
|
150
|
-
Definitions = Struct.new(:process, :diagram)
|
151
|
-
|
152
|
-
# Representers for BPMN XML.
|
153
|
-
module Representer
|
154
|
-
class Task < Representable::Decorator
|
155
|
-
include Representable::XML
|
156
|
-
include Representable::XML::Namespace
|
157
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/MODEL"
|
158
|
-
|
159
|
-
self.representation_wrap = :task # overridden via :as.
|
160
|
-
|
161
|
-
property :id, attribute: true
|
162
|
-
property :name, attribute: true
|
163
|
-
|
164
|
-
collection :outgoing, exec_context: :decorator
|
165
|
-
collection :incoming, exec_context: :decorator
|
166
|
-
|
167
|
-
def outgoing
|
168
|
-
represented.outgoing.collect { |edge| edge[:id] }
|
169
|
-
end
|
170
|
-
|
171
|
-
def incoming
|
172
|
-
represented.incoming.collect { |edge| edge[:id] }
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
class SequenceFlow < Representable::Decorator
|
177
|
-
include Representable::XML
|
178
|
-
include Representable::XML::Namespace
|
179
|
-
self.representation_wrap = :sequenceFlow
|
180
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/MODEL"
|
181
|
-
|
182
|
-
property :id, attribute: true
|
183
|
-
property :sourceRef, attribute: true, exec_context: :decorator
|
184
|
-
property :targetRef, attribute: true, exec_context: :decorator
|
185
|
-
property :direction, as: :conditionExpression
|
186
|
-
|
187
|
-
def sourceRef
|
188
|
-
represented.sourceRef
|
189
|
-
end
|
190
|
-
|
191
|
-
def targetRef
|
192
|
-
represented.targetRef
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
class Process < Representable::Decorator
|
197
|
-
include Representable::XML
|
198
|
-
include Representable::XML::Namespace
|
199
|
-
self.representation_wrap = :process
|
200
|
-
|
201
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/MODEL"
|
202
|
-
|
203
|
-
property :id, attribute: true
|
204
|
-
|
205
|
-
collection :start_events, as: :startEvent, decorator: Task
|
206
|
-
collection :end_events, as: :endEvent, decorator: Task
|
207
|
-
collection :task, decorator: Task
|
208
|
-
collection :sequence_flow, decorator: SequenceFlow, as: :sequenceFlow
|
209
|
-
end
|
210
|
-
|
211
|
-
module Diagram
|
212
|
-
class Bounds < Representable::Decorator
|
213
|
-
include Representable::XML
|
214
|
-
include Representable::XML::Namespace
|
215
|
-
self.representation_wrap = :Bounds
|
216
|
-
|
217
|
-
namespace "http://www.omg.org/spec/DD/20100524/DC"
|
218
|
-
|
219
|
-
property :x, attribute: true
|
220
|
-
property :y, attribute: true
|
221
|
-
property :width, attribute: true
|
222
|
-
property :height, attribute: true
|
223
|
-
end
|
224
|
-
|
225
|
-
class Diagram < Representable::Decorator
|
226
|
-
feature Representable::XML
|
227
|
-
feature Representable::XML::Namespace
|
228
|
-
self.representation_wrap = :BPMNDiagram
|
229
|
-
|
230
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/DI"
|
231
|
-
|
232
|
-
property :plane, as: "BPMNPlane" do
|
233
|
-
self.representation_wrap = :plane
|
234
|
-
|
235
|
-
property :element, as: :bpmnElement, attribute: true
|
236
|
-
|
237
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/DI"
|
238
|
-
|
239
|
-
collection :shapes, as: "BPMNShape" do
|
240
|
-
self.representation_wrap = :BPMNShape
|
241
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/DI"
|
242
|
-
|
243
|
-
property :id, attribute: true
|
244
|
-
property :element, as: :bpmnElement, attribute: true
|
245
|
-
|
246
|
-
property :bounds, as: "Bounds", decorator: Bounds
|
247
|
-
end
|
248
|
-
|
249
|
-
collection :edges, as: "BPMNEdge" do
|
250
|
-
self.representation_wrap = :BPMNEdge
|
251
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/DI"
|
252
|
-
|
253
|
-
property :id, attribute: true
|
254
|
-
property :element, as: :bpmnElement, attribute: true
|
255
|
-
|
256
|
-
# <di:waypoint xsi:type="dc:Point" x="136" y="118" />
|
257
|
-
collection :waypoints, as: :waypoint do
|
258
|
-
namespace "http://www.omg.org/spec/DD/20100524/DI"
|
259
|
-
|
260
|
-
property :type, as: "xsi:type", exec_context: :decorator, attribute: true
|
261
|
-
property :x, attribute: true
|
262
|
-
property :y, attribute: true
|
263
|
-
|
264
|
-
def type
|
265
|
-
"dc:Point"
|
266
|
-
end
|
267
|
-
end
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
# namespace "http://www.w3.org/2001/XMLSchema-instance" # xsi
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
class Definitions < Representable::Decorator
|
276
|
-
include Representable::XML
|
277
|
-
include Representable::XML::Namespace
|
278
|
-
self.representation_wrap = :definitions
|
279
|
-
|
280
|
-
namespace "http://www.omg.org/spec/BPMN/20100524/MODEL"
|
281
|
-
namespace_def bpmn: "http://www.omg.org/spec/BPMN/20100524/MODEL"
|
282
|
-
namespace_def bpmndi: "http://www.omg.org/spec/BPMN/20100524/DI"
|
283
|
-
namespace_def di: "http://www.omg.org/spec/DD/20100524/DI"
|
284
|
-
|
285
|
-
namespace_def dc: "http://www.omg.org/spec/DD/20100524/DC" # <cd:Bounds>
|
286
|
-
namespace_def xsi: "http://www.w3.org/2001/XMLSchema-instance" # used in waypoint.
|
287
|
-
|
288
|
-
property :process, decorator: Process
|
289
|
-
property :diagram, decorator: Diagram::Diagram, as: :BPMNDiagram
|
290
|
-
end
|
291
|
-
end
|
292
|
-
end
|
293
|
-
end
|
294
|
-
end
|
295
|
-
|
296
|
-
# <bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
297
|
-
# <bpmndi:BPMNPlane id="BPMNPlane_1">
|
298
|
-
# <bpmndi:BPMNShape id="_BPMNShape_Task_2" bpmnElement="Task_2">
|
299
|
-
# <dc:Bounds x="100" y="100" width="36" height="36" />
|
300
|
-
# </bpmndi:BPMNShape>
|
301
|
-
# <bpmndi:BPMNShape id="_BPMNShape_Task_3" bpmnElement="Task_3">
|
302
|
-
# <dc:Bounds x="236" y="78" width="100" height="80" />
|
303
|
-
# </bpmndi:BPMNShape>
|
304
|
-
# <bpmndi:BPMNEdge id="_BPMNConnection_Flow_4" bpmnElement="Flow_4">
|
305
|
-
# <di:waypoint xsi:type="dc:Point" x="136" y="118" />
|
306
|
-
# <di:waypoint xsi:type="dc:Point" x="236" y="118" />
|
307
|
-
# </bpmndi:BPMNEdge>
|
308
|
-
# <bpmndi:BPMNShape id="_BPMNShape_Task_5" bpmnElement="Task_5">
|
309
|
-
# <dc:Bounds x="436" y="78" width="100" height="80" />
|
310
|
-
# </bpmndi:BPMNShape>
|
311
|
-
# <bpmndi:BPMNEdge id="_BPMNConnection_Flow_6" bpmnElement="Flow_6">
|
312
|
-
# <di:waypoint xsi:type="dc:Point" x="336" y="118" />
|
313
|
-
# <di:waypoint xsi:type="dc:Point" x="436" y="118" />
|
314
|
-
# </bpmndi:BPMNEdge>
|
315
|
-
# <bpmndi:BPMNShape id="_BPMNShape_Task_1" bpmnElement="Task_1">
|
316
|
-
# <dc:Bounds x="636" y="100" width="36" height="36" />
|
317
|
-
# </bpmndi:BPMNShape>
|
318
|
-
# <bpmndi:BPMNShape id="_BPMNShape_Task_8" bpmnElement="Task_8">
|
319
|
-
# <dc:Bounds x="636" y="266" width="100" height="80" />
|
320
|
-
# </bpmndi:BPMNShape>
|
321
|
-
# <bpmndi:BPMNEdge id="_BPMNConnection_Flow_7" bpmnElement="Flow_7">
|
322
|
-
# <di:waypoint xsi:type="dc:Point" x="536" y="118" />
|
323
|
-
# <di:waypoint xsi:type="dc:Point" x="636" y="118" />
|
324
|
-
# </bpmndi:BPMNEdge>
|
325
|
-
# <bpmndi:BPMNEdge id="_BPMNConnection_Flow_9" bpmnElement="Flow_9">
|
326
|
-
# <di:waypoint xsi:type="dc:Point" x="536" y="118" />
|
327
|
-
# <di:waypoint xsi:type="dc:Point" x="586" y="118" />
|
328
|
-
# <di:waypoint xsi:type="dc:Point" x="586" y="306" />
|
329
|
-
# <di:waypoint xsi:type="dc:Point" x="636" y="306" />
|
330
|
-
# </bpmndi:BPMNEdge>
|
331
|
-
# <bpmndi:BPMNEdge id="_BPMNConnection_Flow_10" bpmnElement="Flow_10">
|
332
|
-
# <di:waypoint xsi:type="dc:Point" x="686" y="266" />
|
333
|
-
# <di:waypoint xsi:type="dc:Point" x="686" y="201" />
|
334
|
-
# <di:waypoint xsi:type="dc:Point" x="654" y="201" />
|
335
|
-
# <di:waypoint xsi:type="dc:Point" x="654" y="136" />
|
336
|
-
# </bpmndi:BPMNEdge>
|
337
|
-
# </bpmndi:BPMNPlane>
|
338
|
-
# </bpmndi:BPMNDiagram>
|