cpee 2.1.21 → 2.1.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -25,92 +25,6 @@
25
25
  </element>
26
26
  </zeroOrMore>
27
27
  </element>
28
- <element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data returned from the endpoint implementing this task as well as arbitray external data streams can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
29
-
30
- <element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed">
31
- <zeroOrMore rngui:label="Add Probe">
32
- <element name="probe">
33
- <element name="name" rngui:label="Label">
34
- <data type="string" rngui:label="Label"/>
35
- </element>
36
- <element name="extractor_type" rngui:label="Extractor Type">
37
- <choice>
38
- <value id='code'>Code</value>
39
- <value id='service'>Service</value>
40
- </choice>
41
- </element>
42
- <element name="extractor_code" rngui:label="Extractor Code" rngui:hint='For extrinsic data'>
43
- <text rngui:label="Code"/>
44
- </element>
45
- <element name="extractor_url" rngui:label="Extractor Service" rngui:hint='For extrinsic &amp; discrete data'>
46
- <data type="string" rngui:label="Service Url"/>
47
- </element>
48
- <element name="extractor_params" rngui:label="Extractor Service Arguments:">
49
- <zeroOrMore rngui:label="Create Argument Pairs">
50
- <element rngui:label="Name">
51
- <anyName/>
52
- <data type="string" rngui:label="Value / Json"/>
53
- </element>
54
- </zeroOrMore>
55
- </element>
56
- <element name="visualizer_url" rngui:label="Visualizer Url">
57
- <data type="string" rngui:label="Service Url"/>
58
- </element>
59
- <element name="visualizer_params" rngui:label="Visualizer Arguments">
60
- <zeroOrMore rngui:label="Create Argument Pairs">
61
- <element rngui:label="Name">
62
- <anyName/>
63
- <data type="string" rngui:label="Value / Json"/>
64
- </element>
65
- </zeroOrMore>
66
- </element>
67
- </element>
68
- </zeroOrMore>
69
- </element>
70
-
71
- <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
72
- <zeroOrMore rngui:label="Add Impact Profile">
73
- <element name="ip">
74
- <element name="name" rngui:label="Label">
75
- <data type="string" rngui:label="Label"/>
76
- </element>
77
- <element name="target" rngui:label="Target Value">
78
- <data type="string" rngui:label="Value"/>
79
- </element>
80
- <element name="ifs" rngui:header="Impact Factors">
81
- <zeroOrMore rngui:label="Add Impact Factor">
82
- <element name="if">
83
- <element name="ivs" rngui:header="Impact Values">
84
- <zeroOrMore rngui:label="Add Impact Value ">
85
- <element name="iv">
86
- <element name="extractor_url" rngui:label="Extractor Url">
87
- <data type="string" rngui:label="Service Url + Parameters"/>
88
- </element>
89
- <element name="aggregator_url" rngui:label="Aggregator Url">
90
- <data type="string" rngui:label="Service Url + Parameters"/>
91
- </element>
92
- </element>
93
- </zeroOrMore>
94
- </element>
95
- <element name="aggregator_url" rngui:label="Impact Function Url">
96
- <data type="string" rngui:label="Service Url + Parameters"/>
97
- </element>
98
- </element>
99
- </zeroOrMore>
100
- </element>
101
- <element name="vfunc_url" rngui:label="Violation Function Url">
102
- <data type="string" rngui:label="Service Url + Parameters"/>
103
- </element>
104
- </element>
105
- </zeroOrMore>
106
- </element>
107
-
108
- </element>
109
- <element name="report" rngui:header="Reporting" rngui:fold="closed">
110
- <element name="url" rngui:label='HTML Snippet'>
111
- <data type="string" rngui:label="url to report snippet"/>
112
- </element>
113
- </element>
114
28
  </element>
115
29
  <element name="annotations" rngui:header="Annotations">
116
30
  <element name="_timing" rngui:header="Timing" rngui:fold="closed">
@@ -120,6 +34,92 @@
120
34
  <element name="_timing_avg" rngui:label="Avg in min">
121
35
  <data type="float" rngui:label="Minutes"/>
122
36
  </element>
37
+ <element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data returned from the endpoint implementing this task as well as arbitray external data streams can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
38
+
39
+ <element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed">
40
+ <zeroOrMore rngui:label="Add Probe">
41
+ <element name="probe">
42
+ <element name="name" rngui:label="Label">
43
+ <data type="string" rngui:label="Label"/>
44
+ </element>
45
+ <element name="extractor_type" rngui:label="Extractor Type">
46
+ <choice>
47
+ <value id='code'>Code</value>
48
+ <value id='service'>Service</value>
49
+ </choice>
50
+ </element>
51
+ <element name="extractor_code" rngui:label="Extractor Code" rngui:hint='For extrinsic data'>
52
+ <text rngui:label="Code"/>
53
+ </element>
54
+ <element name="extractor_url" rngui:label="Extractor Service" rngui:hint='For extrinsic &amp; discrete data'>
55
+ <data type="string" rngui:label="Service Url"/>
56
+ </element>
57
+ <element name="extractor_params" rngui:label="Extractor Service Arguments:">
58
+ <zeroOrMore rngui:label="Create Argument Pairs">
59
+ <element rngui:label="Name">
60
+ <anyName/>
61
+ <data type="string" rngui:label="Value / Json"/>
62
+ </element>
63
+ </zeroOrMore>
64
+ </element>
65
+ <element name="visualizer_url" rngui:label="Visualizer Url">
66
+ <data type="string" rngui:label="Service Url"/>
67
+ </element>
68
+ <element name="visualizer_params" rngui:label="Visualizer Arguments">
69
+ <zeroOrMore rngui:label="Create Argument Pairs">
70
+ <element rngui:label="Name">
71
+ <anyName/>
72
+ <data type="string" rngui:label="Value / Json"/>
73
+ </element>
74
+ </zeroOrMore>
75
+ </element>
76
+ </element>
77
+ </zeroOrMore>
78
+ </element>
79
+
80
+ <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
81
+ <zeroOrMore rngui:label="Add Impact Profile">
82
+ <element name="ip">
83
+ <element name="name" rngui:label="Label">
84
+ <data type="string" rngui:label="Label"/>
85
+ </element>
86
+ <element name="target" rngui:label="Target Value">
87
+ <data type="string" rngui:label="Value"/>
88
+ </element>
89
+ <element name="ifs" rngui:header="Impact Factors">
90
+ <zeroOrMore rngui:label="Add Impact Factor">
91
+ <element name="if">
92
+ <element name="ivs" rngui:header="Impact Values">
93
+ <zeroOrMore rngui:label="Add Impact Value ">
94
+ <element name="iv">
95
+ <element name="extractor_url" rngui:label="Extractor Url">
96
+ <data type="string" rngui:label="Service Url + Parameters"/>
97
+ </element>
98
+ <element name="aggregator_url" rngui:label="Aggregator Url">
99
+ <data type="string" rngui:label="Service Url + Parameters"/>
100
+ </element>
101
+ </element>
102
+ </zeroOrMore>
103
+ </element>
104
+ <element name="aggregator_url" rngui:label="Impact Function Url">
105
+ <data type="string" rngui:label="Service Url + Parameters"/>
106
+ </element>
107
+ </element>
108
+ </zeroOrMore>
109
+ </element>
110
+ <element name="vfunc_url" rngui:label="Violation Function Url">
111
+ <data type="string" rngui:label="Service Url + Parameters"/>
112
+ </element>
113
+ </element>
114
+ </zeroOrMore>
115
+ </element>
116
+
117
+ </element>
118
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
119
+ <element name="url" rngui:label='HTML Snippet'>
120
+ <data type="string" rngui:label="url to report snippet"/>
121
+ </element>
122
+ </element>
123
123
  <element name="explanations" rngui:header="Explanations">
124
124
  <zeroOrMore rngui:label="Add Explanation">
125
125
  <element name="explanation">
@@ -155,29 +155,31 @@
155
155
  </element>
156
156
  </element>
157
157
  </element>
158
- <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
159
- <zeroOrMore rngui:label="Create Argument">
160
- <element name="item" rngui:label="Description">
161
- <attribute name="label" rngui:label="Name">
162
- <data type="string"/>
163
- </attribute>
164
- <text rngui:wrap="true" rngui:label="What does it do?"/>
165
- </element>
166
- </zeroOrMore>
167
- </element>
168
- <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
169
- <zeroOrMore rngui:label="Create Element">
170
- <element name="item" rngui:label="Description">
171
- <attribute name="label" rngui:label="Name">
172
- <data type="string"/>
173
- </attribute>
174
- <text rngui:wrap="true" rngui:label="What does it do?"/>
158
+ <element name="input" rngui:header="Documentation">
159
+ <element name="input" rngui:header="Input Arguments" rngui:fold="closed">
160
+ <zeroOrMore rngui:label="Create Argument">
161
+ <element name="item" rngui:label="Description">
162
+ <attribute name="label" rngui:label="Name">
163
+ <data type="string"/>
164
+ </attribute>
165
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
166
+ </element>
167
+ </zeroOrMore>
168
+ </element>
169
+ <element name="output" rngui:header="Output Elements" rngui:fold="closed">
170
+ <zeroOrMore rngui:label="Create Element">
171
+ <element name="item" rngui:label="Description">
172
+ <attribute name="label" rngui:label="Name">
173
+ <data type="string"/>
174
+ </attribute>
175
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
176
+ </element>
177
+ </zeroOrMore>
178
+ </element>
179
+ <element name="implementation" rngui:header="Implementation" rngui:fold="closed">
180
+ <element name="description" rngui:label="Description">
181
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
175
182
  </element>
176
- </zeroOrMore>
177
- </element>
178
- <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
179
- <element name="description" rngui:label="Description">
180
- <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
181
183
  </element>
182
184
  </element>
183
185
  </element>
@@ -25,6 +25,67 @@
25
25
  </element>
26
26
  </zeroOrMore>
27
27
  </element>
28
+ </element>
29
+ <element name="code" rngui:header="Output Handling">
30
+ <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
31
+ <text rngui:label="Script that is executed, before a service call"/>
32
+ </element>
33
+ <element name="finalize" rngui:header="Finalize" rngui:label="Code" rngui:fold="closed_conditional">
34
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
35
+ <data type="string" rngui:readonly="true"/>
36
+ </attribute>
37
+ <text rngui:label="Script that is executed, when a service returns data"/>
38
+ </element>
39
+ <element name="update" rngui:header="Update" rngui:label="Code" rngui:fold="closed_conditional">
40
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
41
+ <data type="string" rngui:readonly="true"/>
42
+ </attribute>
43
+ <text rngui:label="Script that is executed, when a service sends intermediate data"/>
44
+ </element>
45
+ <element name="rescue" rngui:header="Rescue" rngui:label="Code" rngui:fold="closed_conditional">
46
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
47
+ <data type="string" rngui:readonly="true"/>
48
+ </attribute>
49
+ <text rngui:label="Script that is executed, if a service call fails"/>
50
+ </element>
51
+ </element>
52
+ <element name="annotations" rngui:header="Annotations">
53
+ <element name="_timing" rngui:header="Timing" rngui:fold="closed">
54
+ <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
55
+ <data type="float" rngui:label="[0,1]"/>
56
+ </element>
57
+ <element name="_timing_avg" rngui:label="Avg in min">
58
+ <data type="float" rngui:label="Minutes"/>
59
+ </element>
60
+ <element name="explanations" rngui:header="Explanations">
61
+ <zeroOrMore rngui:label="Add Explanation">
62
+ <element name="explanation">
63
+ <element name="type" rngui:label="Type">
64
+ <choice>
65
+ <value>&gt;</value>
66
+ <value>&lt;</value>
67
+ </choice>
68
+ </element>
69
+ <element name="deviation" rngui:label="Deviation">
70
+ <data type="float" rngui:label="Minutes"/>
71
+ </element>
72
+ <element name="behaviour" rngui:label="Behaviour">
73
+ <choice>
74
+ <value>Immediately</value>
75
+ <value>Wait until next</value>
76
+ <value>Use grace period value</value>
77
+ </choice>
78
+ </element>
79
+ <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
80
+ <data type="float" rngui:label="Minutes"/>
81
+ </element>
82
+ <element name="text" rngui:label="Explanation">
83
+ <data type="string" rngui:label="Patterns"/>
84
+ </element>
85
+ </element>
86
+ </zeroOrMore>
87
+ </element>
88
+ </element>
28
89
  <element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data returned from the endpoint implementing this task as well as arbitray external data streams can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
29
90
 
30
91
  <element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed">
@@ -127,101 +188,43 @@
127
188
  <data type="string" rngui:label="url to report snippet"/>
128
189
  </element>
129
190
  </element>
130
- </element>
131
- <element name="code" rngui:header="Output Handling">
132
- <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
133
- <text rngui:label="Script that is executed, before a service call"/>
134
- </element>
135
- <element name="finalize" rngui:header="Finalize" rngui:label="Code" rngui:fold="closed_conditional">
136
- <attribute name="output" rngui:label="Access Variable" rngui:default="result">
137
- <data type="string" rngui:readonly="true"/>
138
- </attribute>
139
- <text rngui:label="Script that is executed, when a service returns data"/>
140
- </element>
141
- <element name="update" rngui:header="Update" rngui:label="Code" rngui:fold="closed_conditional">
142
- <attribute name="output" rngui:label="Access Variable" rngui:default="result">
143
- <data type="string" rngui:readonly="true"/>
144
- </attribute>
145
- <text rngui:label="Script that is executed, when a service sends intermediate data"/>
146
- </element>
147
- <element name="rescue" rngui:header="Rescue" rngui:label="Code" rngui:fold="closed_conditional">
148
- <attribute name="output" rngui:label="Access Variable" rngui:default="result">
149
- <data type="string" rngui:readonly="true"/>
150
- </attribute>
151
- <text rngui:label="Script that is executed, if a service call fails"/>
152
- </element>
153
- </element>
154
- <element name="annotations" rngui:header="Annotations">
155
- <element name="_timing" rngui:header="Timing" rngui:fold="closed">
156
- <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
157
- <data type="float" rngui:label="[0,1]"/>
158
- </element>
159
- <element name="_timing_avg" rngui:label="Avg in min">
160
- <data type="float" rngui:label="Minutes"/>
161
- </element>
162
- <element name="explanations" rngui:header="Explanations">
163
- <zeroOrMore rngui:label="Add Explanation">
164
- <element name="explanation">
165
- <element name="type" rngui:label="Type">
166
- <choice>
167
- <value>&gt;</value>
168
- <value>&lt;</value>
169
- </choice>
170
- </element>
171
- <element name="deviation" rngui:label="Deviation">
172
- <data type="float" rngui:label="Minutes"/>
173
- </element>
174
- <element name="behaviour" rngui:label="Behaviour">
175
- <choice>
176
- <value>Immediately</value>
177
- <value>Wait until next</value>
178
- <value>Use grace period value</value>
179
- </choice>
180
- </element>
181
- <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
182
- <data type="float" rngui:label="Minutes"/>
183
- </element>
184
- <element name="text" rngui:label="Explanation">
185
- <data type="string" rngui:label="Patterns"/>
186
- </element>
187
- </element>
188
- </zeroOrMore>
189
- </element>
190
- </element>
191
191
  <element name="_notes" rngui:header="Notes" rngui:fold="closed">
192
192
  <element name="_notes_general" rngui:label="General">
193
193
  <text rngui:wrap="true" rngui:label="Notes"/>
194
194
  </element>
195
195
  </element>
196
196
  </element>
197
- <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
198
- <zeroOrMore rngui:label="Create Argument">
199
- <element name="item" rngui:label="Description">
200
- <attribute name="label" rngui:label="Name">
201
- <data type="string"/>
202
- </attribute>
203
- <text rngui:wrap="true" rngui:label="What does it do?"/>
204
- </element>
205
- </zeroOrMore>
206
- </element>
207
- <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
208
- <zeroOrMore rngui:label="Create Element">
209
- <element name="item" rngui:label="Description">
210
- <attribute name="label" rngui:label="Name">
211
- <data type="string"/>
212
- </attribute>
213
- <text rngui:wrap="true" rngui:label="What does it do?"/>
197
+
198
+ <element name="input" rngui:header="Documentation">
199
+ <element name="input" rngui:header="Input Arguments" rngui:fold="closed">
200
+ <zeroOrMore rngui:label="Create Argument">
201
+ <element name="item" rngui:label="Description">
202
+ <attribute name="label" rngui:label="Name">
203
+ <data type="string"/>
204
+ </attribute>
205
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
206
+ </element>
207
+ </zeroOrMore>
208
+ </element>
209
+ <element name="output" rngui:header="Output Elements" rngui:fold="closed">
210
+ <zeroOrMore rngui:label="Create Element">
211
+ <element name="item" rngui:label="Description">
212
+ <attribute name="label" rngui:label="Name">
213
+ <data type="string"/>
214
+ </attribute>
215
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
216
+ </element>
217
+ </zeroOrMore>
218
+ </element>
219
+ <element name="implementation" rngui:header="Implementation" rngui:fold="closed">
220
+ <element name="description" rngui:label="Description">
221
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
214
222
  </element>
215
- </zeroOrMore>
216
- </element>
217
- <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
218
- <element name="description" rngui:label="Description">
219
- <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
220
223
  </element>
221
- </element>
222
- <element name="code" rngui:header="Output Handling Documentation" rngui:fold="closed">
223
- <element name="description" rngui:label="Description">
224
- <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
224
+ <element name="code" rngui:header="Output Handling" rngui:fold="closed">
225
+ <element name="description" rngui:label="Description">
226
+ <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
227
+ </element>
225
228
  </element>
226
229
  </element>
227
230
  </element>
@@ -1,8 +1,2 @@
1
1
  <element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="parallel_branch" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://cpee.org/ns/description/1.0">
2
- <attribute name="pass" rngui:label="Pass to branch">
3
- <data type="string" rngui:label="Data element passed to the local scope, thus not affected by global changes ..."/>
4
- </attribute>
5
- <attribute name="local" rngui:label="Local scope">
6
- <data type="string" rngui:label="Name of the passed data element in the local scope ..."/>
7
- </attribute>
8
- </element>
2
+ </element>
data/cpee.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "2.1.21"
3
+ s.version = "2.1.22"
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.org). If you just need workflow execution, without a rest service exposing it, then use WEEL."
@@ -13,6 +13,7 @@
13
13
  # <http://www.gnu.org/licenses/>.
14
14
 
15
15
  require 'charlock_holmes'
16
+ require 'mimemagic'
16
17
  require 'base64'
17
18
 
18
19
  class ConnectionWrapper < WEEL::ConnectionWrapperBase
@@ -199,7 +200,7 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
199
200
  @controller.notify("status/change", :'activity-uuid' => @handler_activity_uuid, :endpoint => @handler_endpoint, :label => @label, :activity => @handler_position, :id => status.id, :message => status.message)
200
201
  end
201
202
  unless changed_dataelements.nil? || changed_dataelements.empty?
202
- de = dataelements.slice(*changed_dataelements).transform_values { |v| enc = detect_encoding(v); (enc == 'BINARY' ? convert_to_base64(v) : (enc == 'UTF-8' ? v : v.encode('UTF-8',enc))) }
203
+ de = dataelements.slice(*changed_dataelements).transform_values { |v| enc = detect_encoding(v); (enc == 'OTHER' ? v.inspect : (v.encode('UTF-8',enc) rescue convert_to_base64(v))) }
203
204
  @controller.notify("dataelements/change", :'activity-uuid' => @handler_activity_uuid, :endpoint => @handler_endpoint, :label => @label, :activity => @handler_position, :changed => changed_dataelements, :values => de)
204
205
  end
205
206
  unless changed_endpoints.nil? || changed_endpoints.empty?
@@ -245,19 +246,25 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
245
246
 
246
247
  def detect_encoding(text)
247
248
  if text.is_a? String
248
- res = CharlockHolmes::EncodingDetector.detect(text)
249
- if res.is_a?(Hash) && res[:type] == :text && res[:encoding].match(/(ISO|UTF-8)/)
250
- res[:encoding]
249
+ if text.valid_encoding? && text.encoding.name == 'UTF-8'
250
+ 'UTF-8'
251
251
  else
252
- 'BINARY'
252
+ res = CharlockHolmes::EncodingDetector.detect(text)
253
+ if res.is_a?(Hash) && res[:type] == :text && res[:ruby_encoding] != "binary"
254
+ res[:encoding]
255
+ elsif res.is_a?(Hash) && res[:type] == :binary
256
+ 'BINARY'
257
+ else
258
+ 'ISO-8859-1'
259
+ end
253
260
  end
254
261
  else
255
- 'UTF-8'
262
+ 'OTHER'
256
263
  end
257
264
  end
258
265
 
259
266
  def convert_to_base64(text)
260
- 'data:application/octet-stream;base64,' + Base64::urlsafe_encode64(text)
267
+ ('data:' + MimeMagic.by_magic(text).type + ';base64,' + Base64::encode64(text)) rescue ('data:application/octet-stream;base64,' + Base64::encode64(text))
261
268
  end
262
269
 
263
270
  def structurize_result(result)
@@ -266,20 +273,28 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
266
273
  { 'name' => r.name, 'data' => r.value }
267
274
  elsif r.is_a? Riddl::Parameter::Complex
268
275
  res = if r.mimetype == 'application/json'
269
- JSON::parse(r.value.read) rescue nil
276
+ ttt = JSON::parse(r.value.read) rescue nil
277
+ if ttt.nil?
278
+ ''
279
+ else
280
+ enc = detect_encoding(ttt)
281
+ enc == 'OTHER' ? ttt.inspect : (ttt.encode('UTF-8',enc) rescue convert_to_base64(ttt))
282
+ end
270
283
  elsif r.mimetype == 'text/plain' || r.mimetype == 'text/html'
271
284
  ttt = r.value.read
272
285
  ttt = ttt.to_f if ttt == ttt.to_f.to_s
273
286
  ttt = ttt.to_i if ttt == ttt.to_i.to_s
274
- ttt
287
+ enc = detect_encoding(ttt)
288
+ enc == 'OTHER' ? ttt.inspect : (ttt.encode('UTF-8',enc) rescue convert_to_base64(ttt))
275
289
  else
276
- r.value.read
290
+ convert_to_base64(r.value.read)
291
+ r.value.rewind
277
292
  end
278
- enc = detect_encoding(res)
293
+
279
294
  tmp = {
280
295
  'name' => r.name == '' ? 'result' : r.name,
281
296
  'mimetype' => r.mimetype,
282
- 'data' => (enc == 'BINARY' ? convert_to_base64(res) : (enc == 'UTF-8' ? res : res.encode('UTF-8',enc)))
297
+ 'data' => res.to_s
283
298
  }
284
299
  r.value.rewind
285
300
  tmp
data/tools/cpee CHANGED
@@ -116,6 +116,19 @@ elsif command == 'convert'
116
116
  doc.root.prepend('x:executionhandler','ruby')
117
117
  end
118
118
  end rescue nil
119
+ doc.find('//d:parallel_branch/@pass').delete_all!
120
+ doc.find('//d:parallel_branch/@local').delete_all!
121
+ doc.find('//d:call').each do |c|
122
+ c.find('d:annotations').first.add c.find('d:parameters/d:_context_data_analysis')
123
+ c.find('d:annotations').first.add c.find('d:parameters/d:_report')
124
+ if c.find('d:documentation').empty?
125
+ node = c.add('d:documentation')
126
+ node.add c.find('d:input')
127
+ node.add c.find('d:output')
128
+ node.add c.find('d:implementation')
129
+ node.add c.find('d:code[d:description]')
130
+ end
131
+ end
119
132
  doc.find('//x:handlerwrapper').delete_all!
120
133
  doc.find('//d:finalize | //d:update | //d:prepare | //d:rescue').each do |e|
121
134
  if e.parent.qname.name != 'code'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.21
4
+ version: 2.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: tools
12
12
  cert_chain: []
13
- date: 2021-10-28 00:00:00.000000000 Z
13
+ date: 2021-11-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: riddl