cpee 1.5.1 → 1.5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cpee.gemspec +1 -1
- data/server/handlerwrappers/default.rb +39 -92
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 730fff54f61da9f48c9a713b1155cae3ca0a7da81c9bfa125f69c5e4431f1b66
|
4
|
+
data.tar.gz: f4875a6f5e8caf210c293463a62628e8e357da79c8523358b65df4a0e9e96a57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7f53376c1c9e8a5d671d8a469c7cccdf791854ca7f9f1ca16e75bcd994e201cb39d8dab0dd2559cc60d5f10899ec6c0e38476ef5c01191f76b7549f7a0905cc
|
7
|
+
data.tar.gz: e43e49c1f4d6d101ae1b0512c336b5e669002abbc5ef4657a6573b77e603670b194312dd5bc7229c5b5f42ad9f810d0c97ac22487d150f8e3f8cc4656164a012
|
data/cpee.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee"
|
3
|
-
s.version = "1.5.1"
|
3
|
+
s.version = "1.5.1.1"
|
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"
|
@@ -12,8 +12,6 @@
|
|
12
12
|
# CPEE (file COPYING in the main directory). If not, see
|
13
13
|
# <http://www.gnu.org/licenses/>.
|
14
14
|
|
15
|
-
require 'opcua/client'
|
16
|
-
|
17
15
|
class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
|
18
16
|
def self::inform_state_change(arguments,newstate) # {{{
|
19
17
|
controller = arguments[0]
|
@@ -65,105 +63,54 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
|
|
65
63
|
@costs = parameters[:costs]
|
66
64
|
@controller.notify("activity/calling", :instance => @controller.instance, :instance_uuid => @controller.uuid, :label => @label, :instance_name => @controller.info, :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters, :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
67
65
|
if passthrough.to_s.empty?
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
if
|
75
|
-
|
76
|
-
else
|
77
|
-
raise 'invalid nodeid'
|
78
|
-
end
|
79
|
-
client.disconnect
|
80
|
-
callback [Riddl::Parameter::Simple.new('value',result)], {}
|
81
|
-
elsif @handler_endpoint =~ /^opc\.tcp-write:\/\/([^\/]+)\/(\d+)\/([^\?]+)(\?value=(.*))?/
|
82
|
-
nid = $3 == $3.to_i.to_s ? $3.to_i : $3
|
83
|
-
ns = $2
|
84
|
-
par = $5
|
85
|
-
url = 'opc.tcp://' + $1
|
86
|
-
client = OPCUA::Client.new(url)
|
87
|
-
if (node = client.get ns.to_i, nid)
|
88
|
-
(parameters[:arguments] || [→(:name => 'value', :value => par)] || []).each do |ele|
|
89
|
-
what = CPEE::ValueHelper::parse_extended(ele.value)
|
90
|
-
node.value = what
|
91
|
-
result = what
|
92
|
-
end
|
93
|
-
else
|
94
|
-
raise 'invalid nodeid'
|
95
|
-
end
|
96
|
-
client.disconnect
|
97
|
-
callback [Riddl::Parameter::Simple.new('value',result)], {}
|
98
|
-
elsif @handler_endpoint =~ /^opc\.tcp-execute:\/\/([^\/]+)\/(\d+)\/([^\?]+)(\?value=(.*))?/
|
99
|
-
nid = $3 == $3.to_i.to_s ? $3.to_i : $3
|
100
|
-
ns = $2
|
101
|
-
par = $5
|
102
|
-
url = 'opc.tcp://' + $1
|
103
|
-
client = OPCUA::Client.new(url)
|
104
|
-
if (node = client.get ns.to_i, nid)
|
105
|
-
params = []
|
106
|
-
(parameters[:arguments] || []).each do |ele|
|
107
|
-
what = CPEE::ValueHelper::parse_extended(ele.value)
|
108
|
-
params << what
|
109
|
-
end
|
110
|
-
result = node.call *params
|
111
|
-
else
|
112
|
-
raise 'invalid nodeid'
|
113
|
-
end
|
114
|
-
client.disconnect
|
115
|
-
callback [Riddl::Parameter::Simple.new('value',result)], {}
|
116
|
-
end
|
117
|
-
else
|
118
|
-
params = []
|
119
|
-
callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
|
120
|
-
(parameters[:arguments] || []).each do |s|
|
121
|
-
if s.respond_to?(:mimetype)
|
122
|
-
params << Riddl::Parameter::Complex.new(s.name.to_s,v.mimetype,v.value)
|
66
|
+
params = []
|
67
|
+
callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
|
68
|
+
(parameters[:arguments] || []).each do |s|
|
69
|
+
if s.respond_to?(:mimetype)
|
70
|
+
params << Riddl::Parameter::Complex.new(s.name.to_s,v.mimetype,v.value)
|
71
|
+
else
|
72
|
+
if s.name.to_s =~ /__$/
|
73
|
+
params << Riddl::Parameter::Simple.new(s.name.to_s.chop.chop,CPEE::ValueHelper::generate(s.value),:query)
|
123
74
|
else
|
124
|
-
|
125
|
-
params << Riddl::Parameter::Simple.new(s.name.to_s.chop.chop,CPEE::ValueHelper::generate(s.value),:query)
|
126
|
-
else
|
127
|
-
params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
|
128
|
-
end
|
75
|
+
params << Riddl::Parameter::Simple.new(s.name.to_s,CPEE::ValueHelper::generate(s.value))
|
129
76
|
end
|
130
77
|
end
|
78
|
+
end
|
131
79
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
80
|
+
params << Riddl::Header.new("CPEE-BASE",@controller.base_url)
|
81
|
+
params << Riddl::Header.new("CPEE-INSTANCE",@controller.instance)
|
82
|
+
params << Riddl::Header.new("CPEE-INSTANCE-URL",@controller.instance_url)
|
83
|
+
params << Riddl::Header.new("CPEE-INSTANCE-UUID",@controller.uuid)
|
84
|
+
params << Riddl::Header.new("CPEE-CALLBACK",@controller.instance_url + '/callbacks/' + callback)
|
85
|
+
params << Riddl::Header.new("CPEE-CALLBACK-ID",callback)
|
86
|
+
params << Riddl::Header.new("CPEE-ACTIVITY",@handler_position)
|
87
|
+
params << Riddl::Header.new("CPEE-LABEL",parameters[:label]||'')
|
88
|
+
@controller.attributes.each do |key,value|
|
89
|
+
params << Riddl::Header.new("CPEE-ATTR-#{key.to_s.gsub(/_/,'-')}",value)
|
90
|
+
end
|
143
91
|
|
144
|
-
|
145
|
-
|
92
|
+
tendpoint = @handler_endpoint.sub(/^http(s)?-(get|put|post|delete):/,'http\\1:')
|
93
|
+
type = $2 || parameters[:method] || 'post'
|
146
94
|
|
147
|
-
|
95
|
+
client = Riddl::Client.new(tendpoint)
|
148
96
|
|
149
|
-
|
150
|
-
|
97
|
+
@controller.callbacks[callback] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
|
98
|
+
@handler_passthrough = callback
|
151
99
|
|
152
|
-
|
153
|
-
|
154
|
-
|
100
|
+
status, result, headers = client.request type => params
|
101
|
+
if status < 200 || status >= 300
|
102
|
+
callback([ Riddl::Parameter::Complex.new('error','application/json',StringIO.new(JSON::generate({ 'status' => status, 'error' => result[0].value.read }))) ], 'CPEE_SALVAGE' => true)
|
103
|
+
else
|
104
|
+
if headers['CPEE_INSTANTIATION']
|
105
|
+
@controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
106
|
+
end
|
107
|
+
if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
|
108
|
+
headers['CPEE_UPDATE'] = true
|
109
|
+
callback result, headers
|
110
|
+
elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
|
111
|
+
# do nothing, later on things will happend
|
155
112
|
else
|
156
|
-
|
157
|
-
@controller.notify("task/instantiation", :instance => @controller.instance, :label => @label, :instance_name => @controller.info, :instance_uuid => @controller.uuid, :activity => @handler_position, :endpoint => @handler_endpoint, :received => CPEE::ValueHelper.parse(headers['CPEE_INSTANTIATION']), :timestamp => Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z"), :attributes => @controller.attributes_translated)
|
158
|
-
end
|
159
|
-
if headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.any?
|
160
|
-
headers['CPEE_UPDATE'] = true
|
161
|
-
callback result, headers
|
162
|
-
elsif headers['CPEE_CALLBACK'] && headers['CPEE_CALLBACK'] == 'true' && result.empty?
|
163
|
-
# do nothing, later on things will happend
|
164
|
-
else
|
165
|
-
callback result
|
166
|
-
end
|
113
|
+
callback result
|
167
114
|
end
|
168
115
|
end
|
169
116
|
else
|