cpee 1.5.1 → 1.5.1.1
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/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
|