cpee 1.3.204 → 1.3.205

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/ui.css +9 -5
  3. data/cockpit/css/wfadaptor.css +13 -1
  4. data/cockpit/js/instance.js +26 -17
  5. data/cockpit/testsets/Concurrent.xml +19 -17
  6. data/cockpit/testsets/Lego Crane.xml +2 -2
  7. data/cockpit/testsets/Worklist Parallel.xml +17 -17
  8. data/cockpit/testsets/Worklist Test CPEE.xml +4 -4
  9. data/cockpit/testsets/Worklist Test.xml +5 -5
  10. data/cockpit/testsets/Worklist Test2.xml +4 -4
  11. data/cockpit/themes/default/symbols/callcorrelationreceive.svg +6 -0
  12. data/cockpit/themes/default/symbols/callcorrelationsend.svg +6 -0
  13. data/cockpit/themes/default/symbols/callinstantiation.svg +3 -0
  14. data/cockpit/themes/default/symbols/callmanipulateworklist.svg +6 -0
  15. data/cockpit/themes/default/symbols/callworklist.svg +4 -0
  16. data/cockpit/themes/default/theme.js +45 -3
  17. data/cpee.gemspec +1 -1
  18. data/lib/cpee/implementation.rb +7 -2
  19. data/log/server.rb +71 -65
  20. data/server/instances/20/properties.xml +68 -0
  21. data/server/instances/21/properties.xml +118 -0
  22. data/server/instances/22/properties.xml +525 -0
  23. data/server/instances/23/properties.xml +65 -0
  24. data/server/instances/24/properties.xml +65 -0
  25. data/server/instances/25/properties.xml +65 -0
  26. data/server/instances/26/properties.xml +65 -0
  27. data/server/instances/27/properties.xml +65 -0
  28. data/server/instances/28/properties.xml +65 -0
  29. data/server/instances/29/properties.xml +67 -0
  30. data/server/instances/30/notifications/f7afc30fd195bc06ac100a9b848c5da3/consumer-secret +1 -0
  31. data/server/instances/30/notifications/f7afc30fd195bc06ac100a9b848c5da3/producer-secret +1 -0
  32. data/server/instances/30/notifications/f7afc30fd195bc06ac100a9b848c5da3/subscription.xml +42 -0
  33. data/server/instances/30/properties.xml +65 -0
  34. metadata +21 -3
  35. data/server/weel.rb +0 -1
@@ -0,0 +1,6 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="15" cy="15" r="14" class="stand"/>
3
+ <circle cx="15" cy="15" r="11" class="stand"/>
4
+ <rect x="9" y="11" width="12" height="8" class="black" style="fill: none"/>
5
+ <path d="m 9,11 6,4 6,-4" class="black" style="fill: none"/>
6
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="15" cy="15" r="14" class="stand"/>
3
+ <circle cx="15" cy="15" r="11" class="stand"/>
4
+ <rect x="9" y="11" width="12" height="8" class="black"/>
5
+ <path d="m 9,11 6,3 6,-3" class="white" style="fill: none;"/>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="1" y="1" width="28" height="28" rx="4" class="rfill stand" style="stroke-dasharray: 1, 3;"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="1" y="1" width="28" height="28" rx="4" class="rfill stand"/>
3
+ <path transform="translate(-2,-2)" class="normal" style="fill:#000000;" d="m 15,6.5 a 3.9999995,4 0 0 0 -4,4 3.9999995,4 0 0 0 4,4 3.9999995,4 0 0 0 4,-4 3.9999995,4 0 0 0 -4,-4 z m 0,8 -3.5,0 c -1.108,0 -2,0.892 -2,2 l 0,5 c 0,1.108 0.892,2 2,2 l 7,0 c 1.108,0 2,-0.892 2,-2 l 0,-5 c 0,-1.108 -0.892,-2 -2,-2 l -3.5,0 z"/>
4
+ <circle cx="28" cy="27" r="9" class="rfill stand"/>
5
+ <text transform="translate(28,31)" class="small">s</text>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="1" y="1" width="28" height="28" rx="4" class="rfill stand"/>
3
+ <path class="normal" style="fill:#000000;" d="m 15,6.5 a 3.9999995,4 0 0 0 -4,4 3.9999995,4 0 0 0 4,4 3.9999995,4 0 0 0 4,-4 3.9999995,4 0 0 0 -4,-4 z m 0,8 -3.5,0 c -1.108,0 -2,0.892 -2,2 l 0,5 c 0,1.108 0.892,2 2,2 l 7,0 c 1.108,0 2,-0.892 2,-2 l 0,-5 c 0,-1.108 -0.892,-2 -2,-2 l -3.5,0 z"/>
4
+ </svg>
@@ -111,10 +111,16 @@ function WFAdaptorManifestation(adaptor) {
111
111
  'illustrator': {//{{{
112
112
  'endnodes' : 'this',
113
113
  'resolve_symbol' : function(node) {
114
- if($(node).attr('endpoint') == 'instantiation') {
114
+ if($(node).attr('endpoint').match(/^instantiation/)) {
115
115
  return 'callinstantiation';
116
- } else if($(node).attr('endpoint') == 'correlation') {
117
- return 'callcorrelation';
116
+ } else if($(node).attr('endpoint').match(/^correlation_send/)) {
117
+ return 'callcorrelationsend';
118
+ } else if($(node).attr('endpoint').match(/^correlation_receive/)) {
119
+ return 'callcorrelationreceive';
120
+ } else if($(node).attr('endpoint').match(/^worklist/) && $('finalize,update', node).length > 0) {
121
+ return 'callmanipulateworklist';
122
+ } else if($(node).attr('endpoint').match(/^worklist/)) {
123
+ return 'callworklist';
118
124
  } else if($('parameters > service', node).length > 0) {
119
125
  return 'callinjection';
120
126
  } else if($('finalize,update', node).length > 0) {
@@ -740,4 +746,40 @@ function WFAdaptorManifestation(adaptor) {
740
746
  'type' : 'abstract',
741
747
  'description': [self.adaptor.theme_dir + 'rngs/update.rng',self.adaptor.theme_dir + 'rngs/finalize.rng']
742
748
  }; /*}}}*/
749
+ this.elements.callinstantiation = { /*{{{*/
750
+ 'type' : 'abstract',
751
+ 'parent': 'call',
752
+ 'illustrator': {//{{{
753
+ 'svg': self.adaptor.theme_dir + 'symbols/callinstantiation.svg'
754
+ },//}}}
755
+ }; /*}}}*/
756
+ this.elements.callcorrelationsend = { /*{{{*/
757
+ 'type' : 'abstract',
758
+ 'parent': 'call',
759
+ 'illustrator': {//{{{
760
+ 'svg': self.adaptor.theme_dir + 'symbols/callcorrelationsend.svg'
761
+ },//}}}
762
+ }; /*}}}*/
763
+ this.elements.callcorrelationreceive = { /*{{{*/
764
+ 'type' : 'abstract',
765
+ 'parent': 'call',
766
+ 'illustrator': {//{{{
767
+ 'svg': self.adaptor.theme_dir + 'symbols/callcorrelationreceive.svg'
768
+ },//}}}
769
+ }; /*}}}*/
770
+ this.elements.callworklist = { /*{{{*/
771
+ 'type' : 'abstract',
772
+ 'parent': 'call',
773
+ 'illustrator': {//{{{
774
+ 'svg': self.adaptor.theme_dir + 'symbols/callworklist.svg'
775
+ },//}}}
776
+ }; /*}}}*/
777
+ this.elements.callmanipulateworklist = { /*{{{*/
778
+ 'type' : 'abstract',
779
+ 'parent': 'call',
780
+ 'description': self.adaptor.theme_dir + 'rngs/callmanipulate.rng',
781
+ 'illustrator': {//{{{
782
+ 'svg': self.adaptor.theme_dir + 'symbols/callmanipulateworklist.svg'
783
+ },//}}}
784
+ }; /*}}}*/
743
785
  }
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.3.204"
3
+ s.version = "1.3.205"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Preliminary release of cloud process execution engine (cpee). If you just need workflow execution, without a rest/xmpp service exposing it, then use WEEL"
@@ -20,8 +20,13 @@ require 'riddl/utils/properties'
20
20
  require ::File.dirname(__FILE__) + '/controller'
21
21
 
22
22
  require 'ostruct'
23
- def →(a); OpenStruct.new(a); end
24
- def (a); OpenStruct.new(a); end
23
+ class ParaStruct < OpenStruct
24
+ def to_json(*a)
25
+ table.to_json
26
+ end
27
+ end
28
+ def →(a); ParaStruct.new(a); end
29
+ def ⭐(a); ParaStruct.new(a); end
25
30
 
26
31
  module CPEE
27
32
 
@@ -18,85 +18,91 @@ class Logging < Riddl::Implementation #{{{
18
18
  <extension name="Concept" prefix="concept" uri="http://www.xes-standard.org/concept.xesext"/>
19
19
  <extension name="Organizational" prefix="org" uri="http://www.xes-standard.org/org.xesext"/>
20
20
  <extension name="Lifecycle" prefix="lifecycle" uri="http://www.xes-standard.org/lifecycle.xesext"/>
21
+ <global scope="trace">
22
+ <string key="concept:name" value="__INVALID__"/>
23
+ </global>
24
+ <global scope="event">
25
+ <string key="concept:name" value="__INVALID__"/>
26
+ <string key="concept:endpoint" value=""/>
27
+ <string key="id:id" value=""/>
28
+ <string key="lifecycle:transition" value="complete" />
29
+ <date key="time:timestamp" value=""/>
30
+ </global>
31
+ <classifier name="Data" keys="data_send data_received"/>
32
+ <classifier name="Data_Received" keys="data_received"/>
33
+ <classifier name="Data_Send" keys="data_send"/>
21
34
  <trace/>
22
35
  </log>
23
36
  END
24
- def response
25
- topic = @p[1].value
26
- event_name = @p[2].value
27
- if(topic == 'activity' && (event_name=='done' || event_name == 'calling'))
28
- log_dir = ::File.dirname(__FILE__) + "/logs"
29
- instancenr = @h['CPEE_INSTANCE'].split('/').last
30
- notification = JSON.parse(@p[3].value)
31
- uuid = notification['instance_uuid']
32
- activity = notification["activity"]
33
- parameters = notification['parameters']
34
- Dir.mkdir(log_dir+'/'+uuid) unless Dir.exist?(log_dir+'/'+uuid)
35
- time_added=false
36
- XML::Smart.modify(log_dir+'/'+uuid+'/log.xes',LOGTEMPLATE) do |xml|
37
- begin
38
- trace = xml.find("/xmlns:log/xmlns:trace").first
39
- trace.add 'string', :key => "concept:name", :value => "Instance #{instancenr}" if trace.find('xmlns:string').empty?
40
- event = trace.add "event"
41
- if parameters && parameters.has_key?('label')
42
- event.add 'string', :key => "concept:name", :value => parameters["label"]
43
- else
44
- event.add 'string', :key => "concept:name", :value => trace.find("string(xmlns:event[xmlns:string[@key='id:id' and @value='#{activity}']]/xmlns:string[@key='concept:name']/@value)")
45
- end
46
- event.add 'string', :key => "concept:instance", :value => notification["endpoint"] if notification["endpoint"]
47
- event.add 'string', :key => "id:id", :value => activity
37
+ def doc(event_name,log_dir,instancenr,notification)
38
+ uuid = notification['instance_uuid']
39
+ activity = notification["activity"]
40
+ parameters = notification['parameters']
41
+ receiving = notification['received']
42
+ pp notification
43
+ Dir.mkdir(log_dir+'/'+uuid) unless Dir.exist?(log_dir+'/'+uuid)
44
+ time_added=false
45
+ XML::Smart.modify(log_dir+'/'+uuid+'/log.xes',LOGTEMPLATE) do |xml|
46
+ begin
47
+ trace = xml.find("/xmlns:log/xmlns:trace").first
48
+ trace.add 'string', :key => "concept:name", :value => "Instance #{instancenr}" if trace.find('xmlns:string').empty?
49
+ event = trace.add "event"
50
+ if parameters && parameters.has_key?('label')
51
+ event.add 'string', :key => "concept:name", :value => parameters["label"]
52
+ else
53
+ event.add 'string', :key => "concept:name", :value => trace.find("string(xmlns:event[xmlns:string[@key='id:id' and @value='#{activity}']]/xmlns:string[@key='concept:name']/@value)")
54
+ end
55
+ event.add 'string', :key => "concept:endpoint", :value => notification["endpoint"] if notification["endpoint"]
56
+ event.add 'string', :key => "id:id", :value => activity
57
+ unless event_name=='receiving'
48
58
  event.add 'string', :key => "lifecycle:transition", :value => event_name=='done'?"complete":"start"
49
- data_send = ((parameters[:arguments].nil? ? [] : parameters[:arguments]) rescue [])
50
- if data_send.any?
51
- list = event.add 'list', :key => "data_send"
52
- data_send.each do |k,v|
53
- list.add 'string', :key => k , :value => v
54
- end
59
+ else
60
+ event.add 'string', :key => "lifecycle:transition", :value => "unknown"
61
+ end
62
+ data_send = ((parameters[:arguments].nil? ? [] : parameters[:arguments]) rescue [])
63
+ if data_send && data_send.any?
64
+ list = event.add 'list', :key => "data_send"
65
+ data_send.each do |k,v|
66
+ list.add 'string', :key => k , :value => v
55
67
  end
56
- event.add 'date', :key => "time:timestamp", :value => Time.now.iso8601 unless time_added
57
- rescue => e
58
- puts e.message
59
- puts e.backtrace
60
68
  end
61
- end
62
- elsif(event_name=='receiving')
63
- log_dir = ::File.dirname(__FILE__) + "/logs"
64
- instancenr = @h['CPEE_INSTANCE'].split('/').last
65
- notification = JSON.parse(@p[3].value)
66
- uuid = notification['instance_uuid']
67
- activity = notification["activity"]
68
- receiving = notification['received']
69
- Dir.mkdir(log_dir+'/'+uuid) unless Dir.exist?(log_dir+'/'+uuid)
70
- time_added=false
71
- XML::Smart.modify(log_dir+'/'+uuid+'/log.xes',LOGTEMPLATE) do |xml|
72
- begin
73
- trace = xml.find("/xmlns:log/xmlns:trace").first
74
- trace.add 'string', :key => "concept:name", :value => "Instance #{instancenr}" if trace.find('xmlns:string').empty?
75
- event = trace.add "event"
76
- event.add 'string', :key => "concept:name", :value => trace.find("string(xmlns:event[xmlns:string[@key='id:id' and @value='#{activity}']]/xmlns:string[@key='concept:name']/@value)")
77
- event.add 'string', :key => "concept:instance", :value => notification["endpoint"] if notification["endpoint"]
78
- event.add 'string', :key => "id:id", :value => notification["activity"]
79
- event.add 'string', :key => "lifecycle:transition", :value => "unknown"
80
- if receiving.any?
81
- list = event.add 'list', :key => "data_received"
82
- receiving.each do |k,v|
83
- list.add 'string', :key => k, :value => v
69
+ if receiving && receiving.any?
70
+ list = event.add 'list', :key => "data_received"
71
+ if receiving.is_a? Array
72
+ receiving.each do |e|
73
+ e.each do |k,v|
74
+ case v['mimetype']
75
+ when /\/xml$/
76
+ node = list.add 'string', :key => k
77
+ node.add XML::Smart.string(v['content']).root
78
+ else
79
+ list.add 'string', :key => k, :value => v['content']
80
+ end
81
+ end
84
82
  end
83
+ else
84
+ pp receiving
85
85
  end
86
- event.add 'date', :key => "time:timestamp", :value => Time.now.iso8601 unless time_added
87
- rescue => e
88
- puts e.message
89
- puts e.backtrace
90
86
  end
91
- end
92
- else
93
- pp "Something wrong"
87
+ event.add 'date', :key => "time:timestamp", :value => Time.now.iso8601 unless time_added
88
+ rescue => e
89
+ puts e.message
90
+ puts e.backtrace
91
+ end
94
92
  end
95
93
  end
94
+ def response
95
+ topic = @p[1].value
96
+ event_name = @p[2].value
97
+ log_dir = ::File.dirname(__FILE__) + "/logs"
98
+ instancenr = @h['CPEE_INSTANCE'].split('/').last
99
+ notification = JSON.parse(@p[3].value)
100
+ doc(event_name,log_dir,instancenr,notification)
101
+ end
96
102
  end #}}}
97
103
 
98
104
 
99
- Riddl::Server.new(::File.dirname(__FILE__) + '/log.xml', :host => "cpee.org", :port => 9299) do #{{{
105
+ Riddl::Server.new(::File.dirname(__FILE__) + '/log.xml', :host => "coruscant.wst.univie.ac.at", :port => 9299) do #{{{
100
106
  accessible_description true
101
107
  cross_site_xhr true
102
108
  log_path = "/home/demo/Projects/cpee-helpers/log/logs"
@@ -0,0 +1,68 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>8ef13d4b-8709-4556-838a-38f48cad63ba</uuid>
4
+ <info>Enter info here</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>ready</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>3</persons>
13
+ <hotels>[]</hotels>
14
+ <costs>0</costs>
15
+ </dataelements>
16
+ <endpoints>
17
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
18
+ </endpoints>
19
+ <dsl>&lt;?xml version="1.0"?&gt;
20
+ </dsl>
21
+ <dslx>
22
+ <parallel xmlns="http://cpee.org/ns/description/1.0">
23
+ <loop mode="pre_test" condition="data.persons &gt; 0">
24
+ <parallel_branch pass="data.persons" local="p">
25
+ <call id="a2" endpoint="bookHotel">
26
+ <parameters>
27
+ <method>:post</method>
28
+ <arguments>
29
+ <to>"Vienna"</to>
30
+ </arguments>
31
+ </parameters>
32
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
33
+ data.costs += result.value('costs').to_f</finalize>
34
+ </call>
35
+ </parallel_branch>
36
+ <manipulate id="a3">data.persons -= 1</manipulate>
37
+ </loop>
38
+ </parallel>
39
+ </dslx>
40
+ <status>
41
+ <id>0</id>
42
+ <message>undefined</message>
43
+ </status>
44
+ <description>
45
+ <parallel xmlns="http://cpee.org/ns/description/1.0">
46
+ <loop mode="pre_test" condition="data.persons &gt; 0">
47
+ <parallel_branch pass="data.persons" local="p">
48
+ <call id="a2" endpoint="bookHotel">
49
+ <parameters>
50
+ <method>:post</method>
51
+ <arguments>
52
+ <to>"Vienna"</to>
53
+ </arguments>
54
+ </parameters>
55
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
56
+ data.costs += result.value('costs').to_f</finalize>
57
+ </call>
58
+ </parallel_branch>
59
+ <manipulate id="a3">data.persons -= 1</manipulate>
60
+ </loop>
61
+ </parallel>
62
+ </description>
63
+ <transformation>
64
+ <description type="copy"/>
65
+ <dataelements type="rest"/>
66
+ <endpoints type="rest"/>
67
+ </transformation>
68
+ </properties>
@@ -0,0 +1,118 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>b27da837-73a2-418d-aad1-bc834317256e</uuid>
4
+ <info>BulkBuyer</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>stopped</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <instance>1</instance>
13
+ </dataelements>
14
+ <endpoints>
15
+ <corr>http://cpee.org/~demo/corr/corr.php</corr>
16
+ <mesg>http://cpee.org/~demo/corr/mesg.php</mesg>
17
+ </endpoints>
18
+ <dsl>call :a4, :mesg, parameters: { :label =&gt; "\"order\"", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :url, :value =&gt; "http://cpee.org/~demo/generated_data/instance_" + data.instance + "/m1.xml")] }
19
+ call :a2, :corr, parameters: { :label =&gt; "\"status report production start\"", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :correlate, :value =&gt; "/order/id"), ⭐(:name =&gt; :value, :value =&gt; "m13_" + data.instance )] }
20
+ call :a3, :corr, parameters: { :label =&gt; "\"status report end production\"", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :correlate, :value =&gt; "/order/id"), ⭐(:name =&gt; :value, :value =&gt; "m14_" + data.instance )] }
21
+ call :a5, :corr, parameters: { :label =&gt; "\"delivery of product\"", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :correlate, :value =&gt; "/order/id"), ⭐(:name =&gt; :value, :value =&gt; "m15_" + data.instance )] }
22
+ </dsl>
23
+ <dslx>
24
+ <description xmlns="http://cpee.org/ns/description/1.0">
25
+ <call id="a4" endpoint="mesg">
26
+ <parameters>
27
+ <label>"order"</label>
28
+ <method>:post</method>
29
+ <arguments>
30
+ <url>"http://cpee.org/~demo/generated_data/instance_" + data.instance + "/m1.xml"</url>
31
+ </arguments>
32
+ </parameters>
33
+ </call>
34
+ <call id="a2" endpoint="corr">
35
+ <parameters>
36
+ <label>"status report production start"</label>
37
+ <method>:post</method>
38
+ <arguments>
39
+ <correlate>"/order/id"</correlate>
40
+ <value>"m13_" + data.instance </value>
41
+ </arguments>
42
+ </parameters>
43
+ </call>
44
+ <call id="a3" endpoint="corr">
45
+ <parameters>
46
+ <label>"status report end production"</label>
47
+ <method>:post</method>
48
+ <arguments>
49
+ <correlate>"/order/id"</correlate>
50
+ <value>"m14_" + data.instance </value>
51
+ </arguments>
52
+ </parameters>
53
+ </call>
54
+ <call id="a5" endpoint="corr">
55
+ <parameters>
56
+ <label>"delivery of product"</label>
57
+ <method>:post</method>
58
+ <arguments>
59
+ <correlate>"/order/id"</correlate>
60
+ <value>"m15_" + data.instance </value>
61
+ </arguments>
62
+ </parameters>
63
+ </call>
64
+ </description>
65
+ </dslx>
66
+ <status>
67
+ <id>0</id>
68
+ <message>undefined</message>
69
+ </status>
70
+ <description>
71
+ <description xmlns="http://cpee.org/ns/description/1.0">
72
+ <call id="a4" endpoint="mesg">
73
+ <parameters>
74
+ <label>"order"</label>
75
+ <method>:post</method>
76
+ <arguments>
77
+ <url>"http://cpee.org/~demo/generated_data/instance_" + data.instance + "/m1.xml"</url>
78
+ </arguments>
79
+ </parameters>
80
+ </call>
81
+ <call id="a2" endpoint="corr">
82
+ <parameters>
83
+ <label>"status report production start"</label>
84
+ <method>:post</method>
85
+ <arguments>
86
+ <correlate>"/order/id"</correlate>
87
+ <value>"m13_" + data.instance </value>
88
+ </arguments>
89
+ </parameters>
90
+ </call>
91
+ <call id="a3" endpoint="corr">
92
+ <parameters>
93
+ <label>"status report end production"</label>
94
+ <method>:post</method>
95
+ <arguments>
96
+ <correlate>"/order/id"</correlate>
97
+ <value>"m14_" + data.instance </value>
98
+ </arguments>
99
+ </parameters>
100
+ </call>
101
+ <call id="a5" endpoint="corr">
102
+ <parameters>
103
+ <label>"delivery of product"</label>
104
+ <method>:post</method>
105
+ <arguments>
106
+ <correlate>"/order/id"</correlate>
107
+ <value>"m15_" + data.instance </value>
108
+ </arguments>
109
+ </parameters>
110
+ </call>
111
+ </description>
112
+ </description>
113
+ <transformation>
114
+ <description type="copy"/>
115
+ <dataelements type="none"/>
116
+ <endpoints type="none"/>
117
+ </transformation>
118
+ </properties>