cpee 1.3.204 → 1.3.205

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.
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>