cpee 1.5.26 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{FEATURES → FEATURES.md} +7 -6
- data/INSTALL.md +1 -0
- data/{README → README.md} +3 -3
- data/Rakefile +1 -0
- data/cockpit/index.html +7 -7
- data/cockpit/js/details.js +13 -14
- data/cockpit/js/instance.js +191 -284
- data/cockpit/js/parameters.js +13 -3
- data/cockpit/js/ui.js +2 -2
- data/cockpit/model.html +1 -0
- data/cockpit/rngs/attributes.rng +1 -1
- data/cockpit/rngs/dataelements.rng +1 -1
- data/cockpit/rngs/endpoints.rng +1 -1
- data/cockpit/templates.legacy/Async.xml +7 -7
- data/cockpit/templates.legacy/BCO.xml +7 -10
- data/cockpit/templates.legacy/BCS.xml +7 -10
- data/cockpit/templates.legacy/Centurio.xml +6 -6
- data/cockpit/templates.legacy/Concurrent.xml +6 -6
- data/cockpit/templates.legacy/Coopis Testset.xml +6 -6
- data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -6
- data/cockpit/templates.legacy/ICSOC Testset.xml +6 -6
- data/cockpit/templates.legacy/Infinity.xml +3 -3
- data/cockpit/templates.legacy/Lego Boxer.xml +7 -7
- data/cockpit/templates.legacy/Lego Conveyor.xml +7 -7
- data/cockpit/templates.legacy/Lego Crane.xml +7 -7
- data/cockpit/templates.legacy/Lego Ejector.xml +7 -7
- data/cockpit/templates.legacy/Lego Full.xml +7 -7
- data/cockpit/templates.legacy/Lego Liddy.xml +7 -7
- data/cockpit/templates.legacy/Lego Plate.xml +7 -7
- data/cockpit/templates.legacy/Lego Transporter.xml +7 -7
- data/cockpit/templates.legacy/Lego_Part_1.xml +7 -7
- data/cockpit/templates.legacy/LgLinear.xml +6 -10
- data/cockpit/templates.legacy/Linear.xml +7 -7
- data/cockpit/templates.legacy/Log.xml +7 -7
- data/cockpit/templates.legacy/Mangler 1.xml +6 -6
- data/cockpit/templates.legacy/Mangler 2.xml +6 -6
- data/cockpit/templates.legacy/Manuel Labels.xml +7 -7
- data/cockpit/templates.legacy/Promise.xml +7 -7
- data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +6 -6
- data/cockpit/templates.legacy/Subprocess.xml +56 -0
- data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
- data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
- data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
- data/cockpit/templates.legacy/Syncing P34.xml +8 -11
- data/cockpit/templates.legacy/TEST - Bad Loop.xml +6 -6
- data/cockpit/templates.legacy/TEST - Wrong Positions.xml +6 -6
- data/cockpit/templates.legacy/Take_5.xml +48 -0
- data/cockpit/templates.legacy/Update.xml +7 -7
- data/cockpit/templates.legacy/Worklist Parallel.xml +7 -7
- data/cockpit/templates.legacy/Worklist Test CPEE.xml +7 -7
- data/cockpit/templates.legacy/Worklist Test.xml +7 -7
- data/cockpit/templates.legacy/Worklist Test2.xml +7 -7
- data/cockpit/templates.legacy/convert_cpee2.rb +15 -0
- data/cockpit/templates.legacy/testsets.xml +1 -1
- data/cockpit/templates/BPM 2020 Manual Adjust.xml +18 -71
- data/cockpit/templates/BPM 2020 Solution Baseline.xml +17 -71
- data/cockpit/templates/BPM 2020 Solution NN.xml +25 -71
- data/cockpit/templates/BPM 2020 Solution View.xml +15 -71
- data/cockpit/templates/BPM 2020.xml +17 -6
- data/cockpit/templates/Coopis 2010.xml +7 -7
- data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +7 -10
- data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +7 -10
- data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +7 -10
- data/cockpit/templates/Worklist.xml +7 -7
- data/cockpit/templates/convert_cpee2.rb +15 -0
- data/cockpit/themes/compact/rngs/alternative.rng +25 -0
- data/cockpit/themes/compact/rngs/call.rng +17 -17
- data/cockpit/themes/compact/rngs/callmanipulate.rng +26 -26
- data/cockpit/themes/compact/rngs/choose.rng +14 -0
- data/cockpit/themes/compact/rngs/critical.rng +5 -0
- data/cockpit/themes/compact/rngs/escape.rng +1 -0
- data/cockpit/themes/compact/rngs/group.rng +3 -0
- data/cockpit/themes/compact/rngs/loop.rng +22 -0
- data/cockpit/themes/compact/rngs/manipulate.rng +9 -0
- data/cockpit/themes/compact/rngs/otherwise.rng +22 -0
- data/cockpit/themes/compact/rngs/parallel.rng +21 -0
- data/cockpit/themes/compact/rngs/parallel_branch.rng +8 -0
- data/cockpit/themes/compact/rngs/scripts.rng +10 -11
- data/cockpit/themes/compact/rngs/stop.rng +5 -0
- data/cockpit/themes/compact/rngs/terminate.rng +1 -0
- data/cockpit/themes/convert_cpee2.rb +8 -0
- data/cockpit/themes/default/rngs/alternative.rng +8 -8
- data/cockpit/themes/default/rngs/call.rng +84 -48
- data/cockpit/themes/default/rngs/callmanipulate.rng +103 -64
- data/cockpit/themes/default/rngs/choose.rng +5 -3
- data/cockpit/themes/default/rngs/critical.rng +2 -2
- data/cockpit/themes/default/rngs/escape.rng +1 -1
- data/cockpit/themes/default/rngs/group.rng +3 -3
- data/cockpit/themes/default/rngs/loop.rng +8 -8
- data/cockpit/themes/default/rngs/manipulate.rng +3 -3
- data/cockpit/themes/default/rngs/otherwise.rng +8 -8
- data/cockpit/themes/default/rngs/parallel.rng +14 -6
- data/cockpit/themes/default/rngs/parallel_branch.rng +2 -2
- data/cockpit/themes/default/rngs/scripts.rng +23 -0
- data/cockpit/themes/default/rngs/stop.rng +2 -2
- data/cockpit/themes/default/rngs/terminate.rng +1 -1
- data/cockpit/themes/extended/rngs/alternative.rng +25 -0
- data/cockpit/themes/extended/rngs/call.rng +17 -17
- data/cockpit/themes/extended/rngs/callmanipulate.rng +26 -26
- data/cockpit/themes/extended/rngs/choose.rng +14 -0
- data/cockpit/themes/extended/rngs/critical.rng +5 -0
- data/cockpit/themes/extended/rngs/escape.rng +1 -0
- data/cockpit/themes/extended/rngs/group.rng +3 -0
- data/cockpit/themes/extended/rngs/loop.rng +22 -0
- data/cockpit/themes/extended/rngs/manipulate.rng +9 -0
- data/cockpit/themes/extended/rngs/otherwise.rng +22 -0
- data/cockpit/themes/extended/rngs/parallel.rng +21 -0
- data/cockpit/themes/extended/rngs/parallel_branch.rng +8 -0
- data/cockpit/themes/extended/rngs/scripts.rng +10 -11
- data/cockpit/themes/extended/rngs/stop.rng +5 -0
- data/cockpit/themes/extended/rngs/terminate.rng +1 -0
- data/cockpit/themes/extended/theme.js +7 -6
- data/cockpit/themes/model/rngs/alternative.rng +1 -1
- data/cockpit/themes/model/rngs/call.rng +16 -16
- data/cockpit/themes/model/rngs/callmanipulate.rng +17 -17
- data/cockpit/themes/model/rngs/choose.rng +1 -1
- data/cockpit/themes/model/rngs/critical.rng +1 -1
- data/cockpit/themes/model/rngs/escape.rng +1 -1
- data/cockpit/themes/model/rngs/group.rng +1 -1
- data/cockpit/themes/model/rngs/loop.rng +1 -1
- data/cockpit/themes/model/rngs/manipulate.rng +1 -1
- data/cockpit/themes/model/rngs/otherwise.rng +1 -1
- data/cockpit/themes/model/rngs/parallel.rng +1 -1
- data/cockpit/themes/model/rngs/parallel_branch.rng +1 -1
- data/cockpit/themes/model/rngs/scripts.rng +3 -4
- data/cockpit/themes/model/rngs/stop.rng +1 -1
- data/cockpit/themes/model/rngs/terminate.rng +1 -1
- data/cockpit/themes/model/theme.js +7 -6
- data/cockpit/themes/packed/rngs/alternative.rng +25 -0
- data/cockpit/themes/packed/rngs/call.rng +17 -17
- data/cockpit/themes/packed/rngs/callmanipulate.rng +26 -26
- data/cockpit/themes/packed/rngs/choose.rng +14 -0
- data/cockpit/themes/packed/rngs/critical.rng +5 -0
- data/cockpit/themes/packed/rngs/escape.rng +1 -0
- data/cockpit/themes/packed/rngs/group.rng +3 -0
- data/cockpit/themes/packed/rngs/loop.rng +22 -0
- data/cockpit/themes/packed/rngs/manipulate.rng +9 -0
- data/cockpit/themes/packed/rngs/otherwise.rng +22 -0
- data/cockpit/themes/packed/rngs/parallel.rng +21 -0
- data/cockpit/themes/packed/rngs/parallel_branch.rng +8 -0
- data/cockpit/themes/packed/rngs/scripts.rng +10 -11
- data/cockpit/themes/packed/rngs/stop.rng +5 -0
- data/cockpit/themes/packed/rngs/terminate.rng +1 -0
- data/cockpit/themes/packed/theme.js +7 -6
- data/cockpit/themes/preset/rngs/alternative.rng +25 -0
- data/cockpit/themes/preset/rngs/call.rng +17 -17
- data/cockpit/themes/preset/rngs/callmanipulate.rng +26 -26
- data/cockpit/themes/preset/rngs/choose.rng +14 -0
- data/cockpit/themes/preset/rngs/critical.rng +5 -0
- data/cockpit/themes/preset/rngs/escape.rng +1 -0
- data/cockpit/themes/preset/rngs/group.rng +3 -0
- data/cockpit/themes/preset/rngs/loop.rng +22 -0
- data/cockpit/themes/preset/rngs/manipulate.rng +9 -0
- data/cockpit/themes/preset/rngs/otherwise.rng +22 -0
- data/cockpit/themes/preset/rngs/parallel.rng +21 -0
- data/cockpit/themes/preset/rngs/parallel_branch.rng +8 -0
- data/cockpit/themes/preset/rngs/scripts.rng +10 -11
- data/cockpit/themes/preset/rngs/stop.rng +5 -0
- data/cockpit/themes/preset/rngs/terminate.rng +1 -0
- data/cockpit/themes/preset/theme.js +7 -6
- data/cpee.gemspec +10 -11
- data/{log/topics.xml → lib/callbacks.xml} +16 -6
- data/lib/{engine → callbacks}/callbacks.rng +2 -8
- data/lib/cpee.xml +10 -4
- data/lib/cpee/attributes_helper.rb +27 -0
- data/lib/cpee/controller.rb +113 -596
- data/lib/cpee/implementation.rb +167 -191
- data/lib/cpee/implementation_callbacks.rb +77 -0
- data/lib/cpee/implementation_notifications.rb +189 -0
- data/lib/cpee/implementation_properties.rb +714 -0
- data/lib/cpee/{callback.rb → message.rb} +20 -18
- data/lib/cpee/persistence.rb +135 -0
- data/lib/cpee/statemachine.rb +20 -0
- data/lib/cpee/transform.rb +95 -0
- data/lib/engine.xml +1 -59
- data/lib/properties.xml +236 -0
- data/lib/properties/arbitrary.rng +26 -0
- data/lib/properties/attributes.rng +10 -0
- data/lib/properties/dataelements.rng +10 -0
- data/lib/properties/description.rng +8 -0
- data/lib/properties/dsl.rng +7 -0
- data/lib/properties/dslx.rng +8 -0
- data/lib/properties/endpoints.rng +10 -0
- data/lib/properties/handlerwrapper.rng +9 -0
- data/lib/properties/position.rng +15 -0
- data/lib/properties/positions.rng +10 -0
- data/lib/properties/properties.rng +29 -0
- data/lib/properties/set-properties.rng +25 -0
- data/lib/properties/set-some-properties.rng +45 -0
- data/lib/properties/simple.rng +8 -0
- data/lib/properties/state.rng +33 -0
- data/lib/properties/status.rng +12 -0
- data/lib/properties/t_attributes.rng +7 -0
- data/lib/properties/t_dataelements.rng +7 -0
- data/lib/properties/t_endpoints.rng +7 -0
- data/lib/properties/t_position.rng +7 -0
- data/lib/properties/t_positions.rng +7 -0
- data/lib/properties/t_simple.rng +7 -0
- data/lib/properties/t_status.rng +7 -0
- data/lib/properties/t_transformation.rng +7 -0
- data/lib/properties/transformation.rng +40 -0
- data/server/dev.rb +1 -0
- data/server/handlerwrappers/default.rb +40 -38
- data/server/resources/backend/README.md +17 -0
- data/server/resources/backend/instance.rb +23 -0
- data/server/resources/backend/instance.template +19 -0
- data/server/resources/backend/opts.yaml +6 -0
- data/server/resources/backend/run +33 -0
- data/server/resources/notifications/logging/subscription.xml +19 -0
- data/server/resources/properties.empty +38 -0
- data/server/resources/properties.init +11 -11
- data/server/resources/states.dot +19 -0
- data/server/resources/states.xml +49 -0
- data/server/resources/transformation_dslx.xsl +12 -3
- data/server/routing/end.rb +44 -0
- data/server/routing/forward-events.rb +59 -0
- data/server/routing/forward-votes.rb +108 -0
- data/server/routing/persist.rb +155 -0
- data/server/server.rb +1 -0
- data/tools/cpee +46 -15
- data/tools/instantiation/instantiation +0 -1
- data/tools/server/server.rb +0 -1
- metadata +78 -132
- data/INSTALL +0 -23
- data/cockpit/templates/convert_preset.rb +0 -32
- data/cockpit/templates/testsets.xml +0 -11
- data/cockpit/templates/transformations.xml +0 -4
- data/cockpit/themes/compact/rngs/alternative.rng +0 -1
- data/cockpit/themes/compact/rngs/choose.rng +0 -1
- data/cockpit/themes/compact/rngs/critical.rng +0 -1
- data/cockpit/themes/compact/rngs/escape.rng +0 -1
- data/cockpit/themes/compact/rngs/group.rng +0 -1
- data/cockpit/themes/compact/rngs/loop.rng +0 -1
- data/cockpit/themes/compact/rngs/manipulate.rng +0 -1
- data/cockpit/themes/compact/rngs/otherwise.rng +0 -1
- data/cockpit/themes/compact/rngs/parallel.rng +0 -1
- data/cockpit/themes/compact/rngs/parallel_branch.rng +0 -1
- data/cockpit/themes/compact/rngs/stop.rng +0 -1
- data/cockpit/themes/compact/rngs/terminate.rng +0 -1
- data/cockpit/themes/default/rngs/finalize.rng +0 -6
- data/cockpit/themes/default/rngs/update.rng +0 -6
- data/cockpit/themes/default/theme.js +0 -1286
- data/cockpit/themes/extended/rngs/alternative.rng +0 -1
- data/cockpit/themes/extended/rngs/choose.rng +0 -1
- data/cockpit/themes/extended/rngs/critical.rng +0 -1
- data/cockpit/themes/extended/rngs/escape.rng +0 -1
- data/cockpit/themes/extended/rngs/group.rng +0 -1
- data/cockpit/themes/extended/rngs/loop.rng +0 -1
- data/cockpit/themes/extended/rngs/manipulate.rng +0 -1
- data/cockpit/themes/extended/rngs/otherwise.rng +0 -1
- data/cockpit/themes/extended/rngs/parallel.rng +0 -1
- data/cockpit/themes/extended/rngs/parallel_branch.rng +0 -1
- data/cockpit/themes/extended/rngs/stop.rng +0 -1
- data/cockpit/themes/extended/rngs/terminate.rng +0 -1
- data/cockpit/themes/labels/rngs/alternative.rng +0 -25
- data/cockpit/themes/labels/rngs/call.rng +0 -81
- data/cockpit/themes/labels/rngs/callmanipulate.rng +0 -101
- data/cockpit/themes/labels/rngs/choose.rng +0 -12
- data/cockpit/themes/labels/rngs/critical.rng +0 -5
- data/cockpit/themes/labels/rngs/escape.rng +0 -1
- data/cockpit/themes/labels/rngs/finalize.rng +0 -6
- data/cockpit/themes/labels/rngs/group.rng +0 -3
- data/cockpit/themes/labels/rngs/loop.rng +0 -22
- data/cockpit/themes/labels/rngs/manipulate.rng +0 -9
- data/cockpit/themes/labels/rngs/otherwise.rng +0 -22
- data/cockpit/themes/labels/rngs/parallel.rng +0 -13
- data/cockpit/themes/labels/rngs/parallel_branch.rng +0 -8
- data/cockpit/themes/labels/rngs/stop.rng +0 -5
- data/cockpit/themes/labels/rngs/terminate.rng +0 -1
- data/cockpit/themes/labels/rngs/update.rng +0 -6
- data/cockpit/themes/labels/symbols/alternative.svg +0 -5
- data/cockpit/themes/labels/symbols/arrow.svg +0 -3
- data/cockpit/themes/labels/symbols/call.svg +0 -6
- data/cockpit/themes/labels/symbols/callmanipulate.svg +0 -8
- data/cockpit/themes/labels/symbols/choose.svg +0 -5
- data/cockpit/themes/labels/symbols/choose_exclusive.svg +0 -5
- data/cockpit/themes/labels/symbols/choose_inclusive.svg +0 -4
- data/cockpit/themes/labels/symbols/complex.svg +0 -8
- data/cockpit/themes/labels/symbols/critical.svg +0 -4
- data/cockpit/themes/labels/symbols/end.svg +0 -3
- data/cockpit/themes/labels/symbols/escape.svg +0 -5
- data/cockpit/themes/labels/symbols/event_end.svg +0 -3
- data/cockpit/themes/labels/symbols/loop.svg +0 -5
- data/cockpit/themes/labels/symbols/manipulate.svg +0 -4
- data/cockpit/themes/labels/symbols/otherwise.svg +0 -5
- data/cockpit/themes/labels/symbols/parallel.svg +0 -5
- data/cockpit/themes/labels/symbols/parallel_branch.svg +0 -5
- data/cockpit/themes/labels/symbols/parallel_branch_compact.svg +0 -4
- data/cockpit/themes/labels/symbols/parallel_branch_event.svg +0 -14
- data/cockpit/themes/labels/symbols/parallel_branch_normal.svg +0 -5
- data/cockpit/themes/labels/symbols/scripts.svg +0 -4
- data/cockpit/themes/labels/symbols/start.svg +0 -3
- data/cockpit/themes/labels/symbols/stop.svg +0 -5
- data/cockpit/themes/labels/symbols/terminate.svg +0 -4
- data/cockpit/themes/packed/rngs/alternative.rng +0 -1
- data/cockpit/themes/packed/rngs/choose.rng +0 -1
- data/cockpit/themes/packed/rngs/critical.rng +0 -1
- data/cockpit/themes/packed/rngs/escape.rng +0 -1
- data/cockpit/themes/packed/rngs/group.rng +0 -1
- data/cockpit/themes/packed/rngs/loop.rng +0 -1
- data/cockpit/themes/packed/rngs/manipulate.rng +0 -1
- data/cockpit/themes/packed/rngs/otherwise.rng +0 -1
- data/cockpit/themes/packed/rngs/parallel.rng +0 -1
- data/cockpit/themes/packed/rngs/parallel_branch.rng +0 -1
- data/cockpit/themes/packed/rngs/stop.rng +0 -1
- data/cockpit/themes/packed/rngs/terminate.rng +0 -1
- data/cockpit/themes/preset/rngs/alternative.rng +0 -1
- data/cockpit/themes/preset/rngs/choose.rng +0 -1
- data/cockpit/themes/preset/rngs/critical.rng +0 -1
- data/cockpit/themes/preset/rngs/escape.rng +0 -1
- data/cockpit/themes/preset/rngs/group.rng +0 -1
- data/cockpit/themes/preset/rngs/loop.rng +0 -1
- data/cockpit/themes/preset/rngs/manipulate.rng +0 -1
- data/cockpit/themes/preset/rngs/otherwise.rng +0 -1
- data/cockpit/themes/preset/rngs/parallel.rng +0 -1
- data/cockpit/themes/preset/rngs/parallel_branch.rng +0 -1
- data/cockpit/themes/preset/rngs/stop.rng +0 -1
- data/cockpit/themes/preset/rngs/terminate.rng +0 -1
- data/lib/cpee/empty_workflow.rb +0 -28
- data/lib/cpee/handler_notifications.rb +0 -47
- data/lib/cpee/handler_properties.rb +0 -50
- data/lib/cpee/instantiation.rb +0 -369
- data/lib/cpee/processtransformation/bpel/Repository/booking.bpel +0 -125
- data/lib/cpee/processtransformation/bpel/Repository/booking.wsdl +0 -72
- data/lib/cpee/processtransformation/bpel/Repository/booking/airline.wsdl +0 -71
- data/lib/cpee/processtransformation/bpel/Repository/booking/hotel.wsdl +0 -64
- data/lib/cpee/processtransformation/bpel/Repository/booking/report.wsdl +0 -71
- data/lib/cpee/processtransformation/bpel/bpel2wee.rb +0 -34
- data/lib/cpee/processtransformation/bpel/bpelserver.ru +0 -64
- data/lib/cpee/processtransformation/bpel/bpelserver.xml +0 -70
- data/lib/cpee/processtransformation/bpel/lib/BPEL_Transform.rb +0 -367
- data/lib/cpee/processtransformation/bpmn2.rb +0 -297
- data/lib/cpee/processtransformation/cpee.rb +0 -119
- data/lib/cpee/processtransformation/structures.rb +0 -465
- data/lib/cpee/processtransformation/target.rb +0 -50
- data/log/azure.rb +0 -10
- data/log/azure_logger.rb +0 -136
- data/log/chain.xml +0 -27
- data/log/elasticsearch.rb +0 -15
- data/log/elasticsearch_logging.rb +0 -377
- data/log/legacy/test_es.rb +0 -26
- data/log/legacy/test_split.rb +0 -211
- data/log/log.xml +0 -13
- data/log/non_tamp.rb +0 -156
- data/log/sic.rb +0 -64
- data/log/template.xes_xml +0 -23
- data/log/template.xes_yaml +0 -28
- data/log/trace.yaml +0 -17717
- data/log/trace_sic.yaml +0 -18343
- data/log/xes_xml.rb +0 -121
- data/log/xes_yaml.rb +0 -96
- data/server/handlerwrappers/soap.rb +0 -146
- data/server/resources/properties.schema.active +0 -139
- data/server/resources/properties.schema.finished +0 -139
- data/server/resources/properties.schema.inactive +0 -136
- data/test/callback.rb +0 -9
data/log/xes_xml.rb
DELETED
@@ -1,121 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
require 'pp'
|
3
|
-
require 'json'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'riddl/server'
|
6
|
-
require 'riddl/client'
|
7
|
-
require 'riddl/utils/notifications_producer'
|
8
|
-
require 'riddl/utils/properties'
|
9
|
-
require 'riddl/utils/fileserve'
|
10
|
-
require 'riddl/utils/downloadify'
|
11
|
-
require 'riddl/utils/turtle'
|
12
|
-
require 'time'
|
13
|
-
|
14
|
-
class Logging < Riddl::Implementation #{{{
|
15
|
-
def doc(event_name,log_dir,instancenr,notification)
|
16
|
-
uuid = notification['instance_uuid']
|
17
|
-
activity = notification["activity"]
|
18
|
-
parameters = notification['parameters']
|
19
|
-
receiving = notification['received']
|
20
|
-
Dir.mkdir(log_dir+'/'+uuid) unless Dir.exist?(log_dir+'/'+uuid)
|
21
|
-
time_added=false
|
22
|
-
cpee_time = notification['time']
|
23
|
-
XML::Smart.modify(log_dir+'/'+uuid+'/log.xes',LOGTEMPLATE) do |xml|
|
24
|
-
begin
|
25
|
-
trace = xml.find("/xmlns:log/xmlns:trace").first
|
26
|
-
trace.add 'string', :key => "concept:name", :value => "Instance #{instancenr}" if trace.find('xmlns:string').empty?
|
27
|
-
event = trace.add "event"
|
28
|
-
if parameters && parameters.has_key?('label')
|
29
|
-
event.add 'string', :key => "concept:name", :value => parameters["label"]
|
30
|
-
else
|
31
|
-
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)")
|
32
|
-
end
|
33
|
-
event.add 'string', :key => "concept:endpoint", :value => notification["endpoint"] if notification["endpoint"]
|
34
|
-
event.add 'string', :key => "id:id", :value => activity
|
35
|
-
unless event_name=='receiving'
|
36
|
-
event.add 'string', :key => "lifecycle:transition", :value => event_name=='done'?"complete":"start"
|
37
|
-
else
|
38
|
-
event.add 'string', :key => "lifecycle:transition", :value => "unknown"
|
39
|
-
end
|
40
|
-
data_send = ((parameters["arguments"].nil? ? [] : parameters["arguments"]) rescue [])
|
41
|
-
if data_send && data_send.any?
|
42
|
-
list = event.add 'list', :key => "data_send"
|
43
|
-
data_send.each do |e|
|
44
|
-
list.add 'string', :key => e['name'] , :value => e['value']
|
45
|
-
end
|
46
|
-
end
|
47
|
-
if receiving && receiving.any?
|
48
|
-
if receiving.is_a? Array
|
49
|
-
receiving.each do |e|
|
50
|
-
e.each do |k,v|
|
51
|
-
case v['mimetype']
|
52
|
-
when /\/xml$/
|
53
|
-
list = event.add 'list', :key => "data_received"
|
54
|
-
node = list.add 'string', :key => k
|
55
|
-
node.add XML::Smart.string(v['content']).root
|
56
|
-
when /\/json$/
|
57
|
-
rec_unjson(JSON.parse(v['content']),event,"data_received")
|
58
|
-
when /\/html$/
|
59
|
-
list = event.add 'list', :key => "data_received"
|
60
|
-
list.add 'string', :key => k, :value => v['content']
|
61
|
-
else
|
62
|
-
list = event.add 'list', :key => "data_received"
|
63
|
-
list.add 'string', :key => k, :value => v
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
else
|
68
|
-
pp receiving
|
69
|
-
end
|
70
|
-
end
|
71
|
-
event.add 'date', :key => "time:timestamp", :value => cpee_time unless time_added
|
72
|
-
pid, size = `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)
|
73
|
-
File.open(log_dir+'/'+uuid+'/memory.file',"a+"){ |f| f<< size << "\n" }
|
74
|
-
rescue => e
|
75
|
-
puts e.message
|
76
|
-
puts e.backtrace
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def rec_unjson(value,list,key)
|
82
|
-
case value
|
83
|
-
when Array then
|
84
|
-
li = list.add 'list', :key => key
|
85
|
-
value.each_with_index do |v,k|
|
86
|
-
rec_unjson(v,li,k)
|
87
|
-
end
|
88
|
-
when Hash then
|
89
|
-
li = list.add 'list', :key => key
|
90
|
-
value.each do |k,v|
|
91
|
-
rec_unjson(v,li,k)
|
92
|
-
end
|
93
|
-
else
|
94
|
-
list.add 'string', :key => key, :value => value
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
def response
|
99
|
-
topic = @p[1].value
|
100
|
-
event_name = @p[2].value
|
101
|
-
log_dir = @a[0]
|
102
|
-
instancenr = @h['CPEE_INSTANCE_URL'].split('/').last
|
103
|
-
notification = JSON.parse(@p[3].value)
|
104
|
-
doc(event_name,log_dir,instancenr,notification)
|
105
|
-
end
|
106
|
-
end #}}}
|
107
|
-
|
108
|
-
|
109
|
-
Riddl::Server.new(File.join(__dir__,'/log.xml'), :host => 'localhost', :port => 9299) do #{{{
|
110
|
-
accessible_description true
|
111
|
-
cross_site_xhr true
|
112
|
-
@riddllog_dir = File.join(__dir__,logs)"
|
113
|
-
|
114
|
-
interface 'events' do
|
115
|
-
run Logging if post 'event'
|
116
|
-
end
|
117
|
-
interface 'logoverlay' do |r|
|
118
|
-
run Riddl::Utils::FileServe, log_dir + r[:h]["RIDDL_DECLARATION_PATH"]+ ".xes","text/xml" if get
|
119
|
-
end
|
120
|
-
|
121
|
-
end.loop! #}}}
|
data/log/xes_yaml.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
require 'pp'
|
3
|
-
require 'json'
|
4
|
-
require 'yaml'
|
5
|
-
require 'rubygems'
|
6
|
-
require 'riddl/server'
|
7
|
-
require 'riddl/utils/fileserve'
|
8
|
-
require 'time'
|
9
|
-
|
10
|
-
class Logging < Riddl::Implementation #{{{
|
11
|
-
def doc(topic,event_name,log_dir,template,instancenr,notification)
|
12
|
-
instance = notification['instance_uuid']
|
13
|
-
return unless instance
|
14
|
-
|
15
|
-
activity = notification['activity']
|
16
|
-
parameters = notification['parameters']
|
17
|
-
receiving = notification['received']
|
18
|
-
|
19
|
-
log = YAML::load(File.read(template))
|
20
|
-
log["log"]["trace"]["concept:name"] ||= instancenr
|
21
|
-
log["log"]["trace"]["cpee:name"] ||= notification['instance_name'] if notification['instance_name']
|
22
|
-
log["log"]["trace"]["cpee:instance"] ||= instance
|
23
|
-
File.open(File.join(log_dir,instance+'.xes.yaml'),'w'){|f| f.puts log.to_yaml} unless File.exists? File.join(log_dir,instance+'.xes.yaml')
|
24
|
-
event = {}
|
25
|
-
event["concept:instance"] = instancenr
|
26
|
-
event["concept:name"] = notification["label"] if notification["label"]
|
27
|
-
if notification["endpoint"]
|
28
|
-
event["concept:endpoint"] = notification["endpoint"]
|
29
|
-
end
|
30
|
-
event["id:id"] = (activity.nil? || activity == "") ? 'external' : activity
|
31
|
-
event["cpee:activity"] = event["id:id"]
|
32
|
-
event["cpee:activity_uuid"] = notification['activity_uuid'] if notification['activity_uuid']
|
33
|
-
event["cpee:instance"] = instance
|
34
|
-
case event_name
|
35
|
-
when 'receiving', 'change', 'instantiation'
|
36
|
-
event["lifecycle:transition"] = "unknown"
|
37
|
-
when 'done'
|
38
|
-
event["lifecycle:transition"] = "complete"
|
39
|
-
else
|
40
|
-
event["lifecycle:transition"] = "start"
|
41
|
-
end
|
42
|
-
event["cpee:lifecycle:transition"] = "#{topic}/#{event_name}"
|
43
|
-
data_send = ((parameters["arguments"].nil? ? [] : parameters["arguments"]) rescue [])
|
44
|
-
event["data"] = {"data_send" => data_send} unless data_send.empty?
|
45
|
-
if notification['changed']&.any?
|
46
|
-
if event.has_key? "data"
|
47
|
-
event["data"]["data_changed"] ||= notification['changed']
|
48
|
-
else
|
49
|
-
event["data"] = {"data_changer" => notification['changed']}
|
50
|
-
end
|
51
|
-
end
|
52
|
-
if notification['values']&.any?
|
53
|
-
if event.has_key? "data"
|
54
|
-
event["data"]["data_values"] ||= notification['values']
|
55
|
-
else
|
56
|
-
event["data"] = {"data_values" => notification['values']}
|
57
|
-
end
|
58
|
-
end
|
59
|
-
unless receiving&.empty?
|
60
|
-
if event.has_key? "data"
|
61
|
-
event["data"]["data_received"] ||= receiving
|
62
|
-
else
|
63
|
-
event["data"] = {"data_receiver" => receiving}
|
64
|
-
end
|
65
|
-
end
|
66
|
-
event["time:timestamp"]= event['cpee:timestamp'] || Time.now.strftime("%Y-%m-%dT%H:%M:%S.%L%:z")
|
67
|
-
File.open(File.join(log_dir,instance+'.xes.yaml'),'a') do |f|
|
68
|
-
f << {'event' => event}.to_yaml
|
69
|
-
end
|
70
|
-
nil
|
71
|
-
end
|
72
|
-
|
73
|
-
def response
|
74
|
-
topic = @p[1].value
|
75
|
-
event_name = @p[2].value
|
76
|
-
log_dir = @a[0]
|
77
|
-
template = @a[1]
|
78
|
-
instancenr = @h['CPEE_INSTANCE_URL'].split('/').last
|
79
|
-
notification = JSON.parse(@p[3].value)
|
80
|
-
doc topic, event_name, log_dir, template, instancenr, notification
|
81
|
-
end
|
82
|
-
end #}}}
|
83
|
-
|
84
|
-
Riddl::Server.new(File.join(__dir__,'/log.xml'), :host => 'localhost', :port => 9299) do
|
85
|
-
accessible_description true
|
86
|
-
cross_site_xhr true
|
87
|
-
@riddl_opts[:log_dir] ||= File.join(__dir__,'logs')
|
88
|
-
@riddl_opts[:template] ||= File.join(__dir__,'template.xes_yaml')
|
89
|
-
|
90
|
-
interface 'events' do
|
91
|
-
run Logging, @riddl_opts[:log_dir], @riddl_opts[:template] if post 'event'
|
92
|
-
end
|
93
|
-
interface 'logoverlay' do |r|
|
94
|
-
run Riddl::Utils::FileServe, log_dir + r[:h]["RIDDL_DECLARATION_PATH"]+ ".xes","text/plain" if get
|
95
|
-
end
|
96
|
-
end.loop!
|
@@ -1,146 +0,0 @@
|
|
1
|
-
# This file is part of CPEE.
|
2
|
-
#
|
3
|
-
# CPEE is free software: you can redistribute it and/or modify it under the terms
|
4
|
-
# of the GNU General Public License as published by the Free Software Foundation,
|
5
|
-
# either version 3 of the License, or (at your option) any later version.
|
6
|
-
#
|
7
|
-
# CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
|
8
|
-
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
9
|
-
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
10
|
-
#
|
11
|
-
# You should have received a copy of the GNU General Public License along with
|
12
|
-
# CPEE (file COPYING in the main directory). If not, see
|
13
|
-
# <http://www.gnu.org/licenses/>.
|
14
|
-
|
15
|
-
# require 'savon'
|
16
|
-
|
17
|
-
class SOAPHandlerWrapper < WEEL::HandlerWrapperBase
|
18
|
-
def initialize(arguments,endpoint=nil,position=nil,continue=nil) # {{{
|
19
|
-
@controller = arguments[0]
|
20
|
-
@url = arguments[1]
|
21
|
-
@handler_continue = continue
|
22
|
-
@handler_endpoint = endpoint
|
23
|
-
@handler_position = position
|
24
|
-
@handler_passthrough = nil
|
25
|
-
@handler_returnValue = nil
|
26
|
-
end # }}}
|
27
|
-
|
28
|
-
def activity_handle(passthrough, parameters) # {{{
|
29
|
-
@controller.notify("activity/calling", :instance => "#{@url}/#{@controller.id}", :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters)
|
30
|
-
|
31
|
-
if passthrough.nil?
|
32
|
-
callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
|
33
|
-
begin
|
34
|
-
client = Savon.client do
|
35
|
-
wsdl @handler_endpoint
|
36
|
-
log false
|
37
|
-
log_level :info
|
38
|
-
soap_header(
|
39
|
-
"CPEE-BASE" => @url,
|
40
|
-
"CPEE-INSTANCE" => "#{@url}/#{@controller.id}",
|
41
|
-
"CPEE-CALLBACK" => callback
|
42
|
-
)
|
43
|
-
end
|
44
|
-
params = {}
|
45
|
-
(parameters[:parameters] || {}).each do |h|
|
46
|
-
if h.class == Hash
|
47
|
-
h.each do |k,v|
|
48
|
-
params[k] = JSON::generate(v)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
response = client.call parameters[:method].to_sym, params
|
53
|
-
result = response.body.first[1].first[1]
|
54
|
-
rescue Savon::Error => error
|
55
|
-
raise "Could not soap #{@handler_endpoint}->#{parameters[:method].to_sym}'s back: #{error.to_s}"
|
56
|
-
end
|
57
|
-
|
58
|
-
if response.http.headers["CPEE_CALLBACK"] && response.http.headers["CPEE_CALLBACK"] == 'true'
|
59
|
-
@controller.callbacks[callback] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
|
60
|
-
@handler_passthrough = callback
|
61
|
-
return
|
62
|
-
end
|
63
|
-
else
|
64
|
-
@controller.callbacks[passthrough] = CPEE::Callback.new("callback activity: #{@handler_position}",self,:callback,nil,nil,:http)
|
65
|
-
@handler_passthrough = passthrough
|
66
|
-
return
|
67
|
-
end
|
68
|
-
|
69
|
-
@handler_returnValue = result
|
70
|
-
@handler_continue.continue
|
71
|
-
end # }}}
|
72
|
-
|
73
|
-
def activity_result_value # {{{
|
74
|
-
@handler_returnValue
|
75
|
-
end # }}}
|
76
|
-
|
77
|
-
def activity_stop # {{{
|
78
|
-
unless @handler_passthrough.nil?
|
79
|
-
@controller.callbacks.delete(@handler_passthrough)
|
80
|
-
end
|
81
|
-
end # }}}
|
82
|
-
def activity_passthrough_value # {{{
|
83
|
-
@handler_passthrough
|
84
|
-
end # }}}
|
85
|
-
|
86
|
-
def activity_no_longer_necessary # {{{
|
87
|
-
true
|
88
|
-
end # }}}
|
89
|
-
|
90
|
-
def inform_activity_done # {{{
|
91
|
-
@controller.notify("activity/done", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position)
|
92
|
-
end # }}}
|
93
|
-
def inform_activity_manipulate # {{{
|
94
|
-
@controller.notify("activity/manipulating", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position)
|
95
|
-
end # }}}
|
96
|
-
def inform_activity_failed(err) # {{{
|
97
|
-
puts err.message
|
98
|
-
puts err.backtrace
|
99
|
-
@controller.notify("activity/failed", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position, :message => err.message, :line => err.backtrace[0].match(/(.*?):(\d+):/)[2], :where => err.backtrace[0].match(/(.*?):(\d+):/)[1])
|
100
|
-
end # }}}
|
101
|
-
|
102
|
-
def inform_syntax_error(err,code)# {{{
|
103
|
-
puts err.message
|
104
|
-
puts err.backtrace
|
105
|
-
@controller.notify("description/error", :instance => "#{@url}/#{@controller.id}", :message => err.message)
|
106
|
-
end# }}}
|
107
|
-
def inform_manipulate_change(status,dataelements,endpoints) # {{{
|
108
|
-
unless status.nil?
|
109
|
-
@controller.serialize_status!
|
110
|
-
@controller.notify("status/change", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position, :id => status.id, :message => status.message)
|
111
|
-
end
|
112
|
-
unless dataelements.nil?
|
113
|
-
@controller.serialize_dataelements!
|
114
|
-
@controller.notify("dataelements/change", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position, :changed => dataelements)
|
115
|
-
end
|
116
|
-
unless endpoints.nil?
|
117
|
-
@controller.serialize_endpoints!
|
118
|
-
@controller.notify("endpoints/change", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position, :changed => endpoints)
|
119
|
-
end
|
120
|
-
end # }}}
|
121
|
-
def inform_position_change(ipc={}) # {{{
|
122
|
-
@controller.serialize_positions!
|
123
|
-
ipc[:instance] = "#{@url}/#{@controller.id}"
|
124
|
-
@controller.notify("position/change", ipc)
|
125
|
-
end # }}}
|
126
|
-
def inform_state_change(newstate) # {{{
|
127
|
-
if @controller
|
128
|
-
@controller.serialize_state!
|
129
|
-
@controller.notify("state/change", :instance => "#{@url}/#{@controller.id}", :state => newstate)
|
130
|
-
end
|
131
|
-
end # }}}
|
132
|
-
|
133
|
-
def vote_sync_after # {{{
|
134
|
-
@controller.call_vote("activity/syncing_after", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position)
|
135
|
-
end # }}}
|
136
|
-
def vote_sync_before # {{{
|
137
|
-
@controller.call_vote("activity/syncing_before", :endpoint => @handler_endpoint, :instance => "#{@url}/#{@controller.id}", :activity => @handler_position)
|
138
|
-
end # }}}
|
139
|
-
|
140
|
-
def callback(result=nil,options={})
|
141
|
-
@handler_returnValue = result
|
142
|
-
@controller.callbacks.delete(@handler_passthrough)
|
143
|
-
@handler_passthrough = nil
|
144
|
-
@handler_continue.continue
|
145
|
-
end
|
146
|
-
end
|
@@ -1,139 +0,0 @@
|
|
1
|
-
<!--
|
2
|
-
This file is part of CPEE.
|
3
|
-
|
4
|
-
CPEE is free software: you can redistribute it and/or modify it under the terms
|
5
|
-
of the GNU General Public License as published by the Free Software Foundation,
|
6
|
-
either version 3 of the License, or (at your option) any later version.
|
7
|
-
|
8
|
-
CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
|
9
|
-
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
10
|
-
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
11
|
-
|
12
|
-
You should have received a copy of the GNU General Public License along with
|
13
|
-
CPEE (file COPYING in the main directory). If not, see
|
14
|
-
<http://www.gnu.org/licenses/>.
|
15
|
-
-->
|
16
|
-
|
17
|
-
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
18
|
-
<attributes type="complex" modifiable="false" mutable="false">
|
19
|
-
<zeroOrMore>
|
20
|
-
<element><anyName/><text/></element>
|
21
|
-
</zeroOrMore>
|
22
|
-
</attributes>
|
23
|
-
<handlerwrapper type="simple" modifiable="false" mutable="false">
|
24
|
-
<data type="string">
|
25
|
-
<param name="pattern">[A-Z][a-zA-Z]*</param>
|
26
|
-
</data>
|
27
|
-
</handlerwrapper>
|
28
|
-
<dsl type="simple" modifiable="false" mutable="false">
|
29
|
-
<text/>
|
30
|
-
</dsl>
|
31
|
-
<dslx type="arbitrary" modifiable="false" mutable="false"/>
|
32
|
-
<description type="arbitrary" modifiable="false" mutable="false"/>
|
33
|
-
<transformation type="complex" modifiable="false" mutable="false">
|
34
|
-
<element name='description'>
|
35
|
-
<attribute name='type'>
|
36
|
-
<choice>
|
37
|
-
<value>copy</value>
|
38
|
-
<value>rest</value>
|
39
|
-
<value>xslt</value>
|
40
|
-
<value>clean</value>
|
41
|
-
<value>none</value>
|
42
|
-
</choice>
|
43
|
-
</attribute>
|
44
|
-
<data type="anyURI"/>
|
45
|
-
</element>
|
46
|
-
<element name='dataelements'>
|
47
|
-
<attribute name='type'>
|
48
|
-
<choice>
|
49
|
-
<value>rest</value>
|
50
|
-
<value>xslt</value>
|
51
|
-
<value>clean</value>
|
52
|
-
<value>none</value>
|
53
|
-
</choice>
|
54
|
-
</attribute>
|
55
|
-
<data type="anyURI"/>
|
56
|
-
</element>
|
57
|
-
<element name='endpoints'>
|
58
|
-
<attribute name='type'>
|
59
|
-
<choice>
|
60
|
-
<value>rest</value>
|
61
|
-
<value>xslt</value>
|
62
|
-
<value>clean</value>
|
63
|
-
<value>none</value>
|
64
|
-
</choice>
|
65
|
-
</attribute>
|
66
|
-
<data type="anyURI"/>
|
67
|
-
</element>
|
68
|
-
</transformation>
|
69
|
-
<state type="state" modifiable="true">
|
70
|
-
<ready>
|
71
|
-
<running putable="true"/>
|
72
|
-
<ready putable="true"/>
|
73
|
-
<simulating putable="true"/>
|
74
|
-
<replaying putable="true"/>
|
75
|
-
<abandoned putable="true"/>
|
76
|
-
</ready>
|
77
|
-
<running>
|
78
|
-
<stopping putable="true"/>
|
79
|
-
<finishing putable="false"/>
|
80
|
-
<finished putable="false"/>
|
81
|
-
</running>
|
82
|
-
<simulating>
|
83
|
-
<ready putable="false"/>
|
84
|
-
<stopped putable="false"/>
|
85
|
-
</simulating>
|
86
|
-
<replaying>
|
87
|
-
<stopping putable="true"/>
|
88
|
-
<finishing putable="false"/>
|
89
|
-
<finished putable="false"/>
|
90
|
-
</replaying>
|
91
|
-
<stopping>
|
92
|
-
<stopped putable="false"/>
|
93
|
-
</stopping>
|
94
|
-
<stopped>
|
95
|
-
<abandoned putable="true"/>
|
96
|
-
<stopped putable="true"/>
|
97
|
-
<running putable="true"/>
|
98
|
-
<replaying putable="true"/>
|
99
|
-
<simulating putable="true"/>
|
100
|
-
</stopped>
|
101
|
-
<abandoned/>
|
102
|
-
<finished/>
|
103
|
-
</state>
|
104
|
-
<status type="complex" modifiable="false" mutable="true">
|
105
|
-
<optional>
|
106
|
-
<element name='id'>
|
107
|
-
<data type="integer"/>
|
108
|
-
</element>
|
109
|
-
<element name='message'>
|
110
|
-
<data type="string"/>
|
111
|
-
</element>
|
112
|
-
</optional>
|
113
|
-
</status>
|
114
|
-
<positions type="complex" modifiable="false" mutable="true">
|
115
|
-
<zeroOrMore>
|
116
|
-
<element>
|
117
|
-
<anyName/>
|
118
|
-
<optional>
|
119
|
-
<attribute name='passthrough'>
|
120
|
-
<data type="string"/>
|
121
|
-
</attribute>
|
122
|
-
</optional>
|
123
|
-
<data type="string">
|
124
|
-
<param name="pattern">(at|after)</param>
|
125
|
-
</data>
|
126
|
-
</element>
|
127
|
-
</zeroOrMore>
|
128
|
-
</positions>
|
129
|
-
<dataelements type="complex" modifiable="false" mutable="true">
|
130
|
-
<zeroOrMore>
|
131
|
-
<element><anyName/><text/></element>
|
132
|
-
</zeroOrMore>
|
133
|
-
</dataelements>
|
134
|
-
<endpoints type="complex" modifiable="false" mutable="true">
|
135
|
-
<zeroOrMore>
|
136
|
-
<element><anyName/><text/></element>
|
137
|
-
</zeroOrMore>
|
138
|
-
</endpoints>
|
139
|
-
</properties>
|