cpee 1.3.102
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.
- data/AUTHORS +3 -0
- data/COPYING +165 -0
- data/FEATURES +28 -0
- data/INSTALL +23 -0
- data/README +7 -0
- data/Rakefile +28 -0
- data/cockpit/contrib/symbols.svg +224 -0
- data/cockpit/contrib/transformation1.xsl +264 -0
- data/cockpit/contrib/transformation2.xsl +10 -0
- data/cockpit/css/ui.css +155 -0
- data/cockpit/index.html +241 -0
- data/cockpit/js/details.js +146 -0
- data/cockpit/js/instance.js +927 -0
- data/cockpit/js/parameters.js +66 -0
- data/cockpit/js/ui.js +48 -0
- data/cockpit/js/wfadaptor.cpee.js +1082 -0
- data/cockpit/lib/contextmenu.css +72 -0
- data/cockpit/lib/contextmenu.js +63 -0
- data/cockpit/lib/jquery-ui.custom.min.js +259 -0
- data/cockpit/lib/jquery-ui.custom.min.txt +16 -0
- data/cockpit/lib/jquery.caret.min.js +10 -0
- data/cockpit/lib/jquery.min.js +4 -0
- data/cockpit/lib/jquery.svgdom.js +281 -0
- data/cockpit/lib/parsequery.js +19 -0
- data/cockpit/lib/printf.js +368 -0
- data/cockpit/lib/strftime.min.js +1 -0
- data/cockpit/lib/ui.css +270 -0
- data/cockpit/lib/ui.js +60 -0
- data/cockpit/lib/underscore.min.js +27 -0
- data/cockpit/lib/util.js +53 -0
- data/cockpit/lib/wfadaptor-doc/demo1.html +517 -0
- data/cockpit/lib/wfadaptor-doc/demo2.html +84 -0
- data/cockpit/lib/wfadaptor-doc/index.html +54 -0
- data/cockpit/lib/wfadaptor.css +217 -0
- data/cockpit/lib/wfadaptor.js +410 -0
- data/cockpit/testsets/ADVENTURE Dynamic Order.xml +353 -0
- data/cockpit/testsets/ADVENTURE Main Loop.xml +327 -0
- data/cockpit/testsets/ADVENTURE Order.xml +424 -0
- data/cockpit/testsets/ADVENTURE Performance Test 1.xml +311 -0
- data/cockpit/testsets/ADVENTURE Performance Test 2.xml +297 -0
- data/cockpit/testsets/Concurrent.xml +315 -0
- data/cockpit/testsets/Coopis Testset.xml +346 -0
- data/cockpit/testsets/Endpoints and Data Manipulation.xml +359 -0
- data/cockpit/testsets/ICSOC Testset.xml +354 -0
- data/cockpit/testsets/Linear.xml +328 -0
- data/cockpit/testsets/Mangler 1.xml +352 -0
- data/cockpit/testsets/Mangler 2.xml +372 -0
- data/cockpit/testsets/RESCUE - Book Movie - Local.xml +385 -0
- data/cockpit/testsets/RESCUE - Book Movie.xml +385 -0
- data/cockpit/testsets/RESCUE - Loop-Parallel Injection.xml +393 -0
- data/cockpit/testsets/SOPROMO Test Sonification.xml +356 -0
- data/cockpit/testsets/Syncing P34 1.xml +329 -0
- data/cockpit/testsets/Syncing P34 2.xml +329 -0
- data/cockpit/testsets/Syncing P34 3.xml +329 -0
- data/cockpit/testsets/Syncing P34.xml +329 -0
- data/cockpit/testsets/TEST - Bad Loop.xml +428 -0
- data/cockpit/testsets/TEST - Wrong Positions.xml +470 -0
- data/cockpit/testsets/index.xml +24 -0
- data/contrib/Screenshot at 2011-09-28 02:38:11.png +0 -0
- data/contrib/logo2-small.png +0 -0
- data/contrib/logo2.png +0 -0
- data/contrib/logo2.svg +7610 -0
- data/contrib/logo2a.png +0 -0
- data/contrib/logo2a.svg +367 -0
- data/cpee.gemspec +24 -0
- data/lib/cpee.xml +39 -0
- data/lib/cpee/callback.rb +40 -0
- data/lib/cpee/controller.rb +440 -0
- data/lib/cpee/empty_workflow.rb +24 -0
- data/lib/cpee/handler_notifications.rb +46 -0
- data/lib/cpee/handler_properties.rb +43 -0
- data/lib/cpee/implementation.rb +174 -0
- data/lib/engine.xml +85 -0
- data/lib/engine/callbacks.rng +41 -0
- data/lib/engine/instance-info.rng +41 -0
- data/lib/engine/instances.rng +38 -0
- data/server/handlerwrappers/default.rb +142 -0
- data/server/handlerwrappers/rescue.rb +216 -0
- data/server/handlerwrappers/soap.rb +152 -0
- data/server/instances/1/notifications/1d41ebf5e52bf039b3c3873fddb8e9bd/consumer-secret +1 -0
- data/server/instances/1/notifications/1d41ebf5e52bf039b3c3873fddb8e9bd/producer-secret +1 -0
- data/server/instances/1/notifications/1d41ebf5e52bf039b3c3873fddb8e9bd/subscription.xml +27 -0
- data/server/instances/1/notifications/66ad546f13c6c7c84f36215c24dd2e6e/consumer-secret +1 -0
- data/server/instances/1/notifications/66ad546f13c6c7c84f36215c24dd2e6e/producer-secret +1 -0
- data/server/instances/1/notifications/66ad546f13c6c7c84f36215c24dd2e6e/subscription.xml +27 -0
- data/server/instances/1/notifications/9f23b768395a19cc1dd6c2d2a243c78e/consumer-secret +1 -0
- data/server/instances/1/notifications/9f23b768395a19cc1dd6c2d2a243c78e/producer-secret +1 -0
- data/server/instances/1/notifications/9f23b768395a19cc1dd6c2d2a243c78e/subscription.xml +27 -0
- data/server/instances/1/notifications/fa690a88cc565dfa53b13ced355cd039/consumer-secret +1 -0
- data/server/instances/1/notifications/fa690a88cc565dfa53b13ced355cd039/producer-secret +1 -0
- data/server/instances/1/notifications/fa690a88cc565dfa53b13ced355cd039/subscription.xml +5 -0
- data/server/instances/1/properties.xml +522 -0
- data/server/instances/10/notifications/0867c4a937f882af259137e36d331261/consumer-secret +1 -0
- data/server/instances/10/notifications/0867c4a937f882af259137e36d331261/producer-secret +1 -0
- data/server/instances/10/notifications/0867c4a937f882af259137e36d331261/subscription.xml +27 -0
- data/server/instances/10/notifications/28acb605c56588ec8e47431c1fcf0b20/consumer-secret +1 -0
- data/server/instances/10/notifications/28acb605c56588ec8e47431c1fcf0b20/producer-secret +1 -0
- data/server/instances/10/notifications/28acb605c56588ec8e47431c1fcf0b20/subscription.xml +27 -0
- data/server/instances/10/notifications/31d3f699def1d1e86dc18ef421f718ad/consumer-secret +1 -0
- data/server/instances/10/notifications/31d3f699def1d1e86dc18ef421f718ad/producer-secret +1 -0
- data/server/instances/10/notifications/31d3f699def1d1e86dc18ef421f718ad/subscription.xml +27 -0
- data/server/instances/10/notifications/380b57220000c45342fc56a1ed8e9e3f/consumer-secret +1 -0
- data/server/instances/10/notifications/380b57220000c45342fc56a1ed8e9e3f/producer-secret +1 -0
- data/server/instances/10/notifications/380b57220000c45342fc56a1ed8e9e3f/subscription.xml +27 -0
- data/server/instances/10/notifications/41eeb5d90b513781fb4b440cb97ca7f1/consumer-secret +1 -0
- data/server/instances/10/notifications/41eeb5d90b513781fb4b440cb97ca7f1/producer-secret +1 -0
- data/server/instances/10/notifications/41eeb5d90b513781fb4b440cb97ca7f1/subscription.xml +27 -0
- data/server/instances/10/notifications/4d8c1b3a8dfdacac98144fad072c46d8/consumer-secret +1 -0
- data/server/instances/10/notifications/4d8c1b3a8dfdacac98144fad072c46d8/producer-secret +1 -0
- data/server/instances/10/notifications/4d8c1b3a8dfdacac98144fad072c46d8/subscription.xml +27 -0
- data/server/instances/10/notifications/4dde696cfb001e00a7efbd8e86ba227d/consumer-secret +1 -0
- data/server/instances/10/notifications/4dde696cfb001e00a7efbd8e86ba227d/producer-secret +1 -0
- data/server/instances/10/notifications/4dde696cfb001e00a7efbd8e86ba227d/subscription.xml +27 -0
- data/server/instances/10/notifications/4e1c0065dd95f7c175bbccb874f0baea/consumer-secret +1 -0
- data/server/instances/10/notifications/4e1c0065dd95f7c175bbccb874f0baea/producer-secret +1 -0
- data/server/instances/10/notifications/4e1c0065dd95f7c175bbccb874f0baea/subscription.xml +27 -0
- data/server/instances/10/notifications/6198fb7d6a8249f7820e3e57eeefa8af/consumer-secret +1 -0
- data/server/instances/10/notifications/6198fb7d6a8249f7820e3e57eeefa8af/producer-secret +1 -0
- data/server/instances/10/notifications/6198fb7d6a8249f7820e3e57eeefa8af/subscription.xml +27 -0
- data/server/instances/10/notifications/6aeb90da52abc150f0f0135d8ba2dbac/consumer-secret +1 -0
- data/server/instances/10/notifications/6aeb90da52abc150f0f0135d8ba2dbac/producer-secret +1 -0
- data/server/instances/10/notifications/6aeb90da52abc150f0f0135d8ba2dbac/subscription.xml +27 -0
- data/server/instances/10/notifications/6d77f5bac1eb9d6165394b6bfc9b492a/consumer-secret +1 -0
- data/server/instances/10/notifications/6d77f5bac1eb9d6165394b6bfc9b492a/producer-secret +1 -0
- data/server/instances/10/notifications/6d77f5bac1eb9d6165394b6bfc9b492a/subscription.xml +27 -0
- data/server/instances/10/notifications/7092411a6bb6822f651798fdcd3c4787/consumer-secret +1 -0
- data/server/instances/10/notifications/7092411a6bb6822f651798fdcd3c4787/producer-secret +1 -0
- data/server/instances/10/notifications/7092411a6bb6822f651798fdcd3c4787/subscription.xml +27 -0
- data/server/instances/10/notifications/7ab29bbad4122295c05f9e33fd1e0fc3/consumer-secret +1 -0
- data/server/instances/10/notifications/7ab29bbad4122295c05f9e33fd1e0fc3/producer-secret +1 -0
- data/server/instances/10/notifications/7ab29bbad4122295c05f9e33fd1e0fc3/subscription.xml +27 -0
- data/server/instances/10/notifications/7fabcecc57fe0bd27ce50bedaef47bd2/consumer-secret +1 -0
- data/server/instances/10/notifications/7fabcecc57fe0bd27ce50bedaef47bd2/producer-secret +1 -0
- data/server/instances/10/notifications/7fabcecc57fe0bd27ce50bedaef47bd2/subscription.xml +27 -0
- data/server/instances/10/notifications/85760dad8f7abbd73ae1dd44140dabf1/consumer-secret +1 -0
- data/server/instances/10/notifications/85760dad8f7abbd73ae1dd44140dabf1/producer-secret +1 -0
- data/server/instances/10/notifications/85760dad8f7abbd73ae1dd44140dabf1/subscription.xml +27 -0
- data/server/instances/10/notifications/8b9a96d109d44a1fc22858006c0f0e16/consumer-secret +1 -0
- data/server/instances/10/notifications/8b9a96d109d44a1fc22858006c0f0e16/producer-secret +1 -0
- data/server/instances/10/notifications/8b9a96d109d44a1fc22858006c0f0e16/subscription.xml +27 -0
- data/server/instances/10/notifications/9120a477e64d7debae2cda964a9948a0/consumer-secret +1 -0
- data/server/instances/10/notifications/9120a477e64d7debae2cda964a9948a0/producer-secret +1 -0
- data/server/instances/10/notifications/9120a477e64d7debae2cda964a9948a0/subscription.xml +27 -0
- data/server/instances/10/notifications/93c5a5ab72a745c0f9fffe2fe58db205/consumer-secret +1 -0
- data/server/instances/10/notifications/93c5a5ab72a745c0f9fffe2fe58db205/producer-secret +1 -0
- data/server/instances/10/notifications/93c5a5ab72a745c0f9fffe2fe58db205/subscription.xml +27 -0
- data/server/instances/10/notifications/a8db1498388588bddf518878263fd898/consumer-secret +1 -0
- data/server/instances/10/notifications/a8db1498388588bddf518878263fd898/producer-secret +1 -0
- data/server/instances/10/notifications/a8db1498388588bddf518878263fd898/subscription.xml +27 -0
- data/server/instances/10/notifications/b534f057c1c97f65e68f59427958e78d/consumer-secret +1 -0
- data/server/instances/10/notifications/b534f057c1c97f65e68f59427958e78d/producer-secret +1 -0
- data/server/instances/10/notifications/b534f057c1c97f65e68f59427958e78d/subscription.xml +27 -0
- data/server/instances/10/notifications/bb3d69ee3df32f3b5cb69a51d1af8ae4/consumer-secret +1 -0
- data/server/instances/10/notifications/bb3d69ee3df32f3b5cb69a51d1af8ae4/producer-secret +1 -0
- data/server/instances/10/notifications/bb3d69ee3df32f3b5cb69a51d1af8ae4/subscription.xml +27 -0
- data/server/instances/10/notifications/bc597391804363834987804436b8b63b/consumer-secret +1 -0
- data/server/instances/10/notifications/bc597391804363834987804436b8b63b/producer-secret +1 -0
- data/server/instances/10/notifications/bc597391804363834987804436b8b63b/subscription.xml +27 -0
- data/server/instances/10/notifications/bf2f6599eebcd9a08e47bdafd4a67660/consumer-secret +1 -0
- data/server/instances/10/notifications/bf2f6599eebcd9a08e47bdafd4a67660/producer-secret +1 -0
- data/server/instances/10/notifications/bf2f6599eebcd9a08e47bdafd4a67660/subscription.xml +27 -0
- data/server/instances/10/notifications/db9cf0ae80bd61e6124c382b992a1550/consumer-secret +1 -0
- data/server/instances/10/notifications/db9cf0ae80bd61e6124c382b992a1550/producer-secret +1 -0
- data/server/instances/10/notifications/db9cf0ae80bd61e6124c382b992a1550/subscription.xml +27 -0
- data/server/instances/10/notifications/e528089610c991500eb2e8b094f6f169/consumer-secret +1 -0
- data/server/instances/10/notifications/e528089610c991500eb2e8b094f6f169/producer-secret +1 -0
- data/server/instances/10/notifications/e528089610c991500eb2e8b094f6f169/subscription.xml +27 -0
- data/server/instances/10/notifications/e7d3ca382d26b5f5eba00c40c29827da/consumer-secret +1 -0
- data/server/instances/10/notifications/e7d3ca382d26b5f5eba00c40c29827da/producer-secret +1 -0
- data/server/instances/10/notifications/e7d3ca382d26b5f5eba00c40c29827da/subscription.xml +27 -0
- data/server/instances/10/notifications/ebdc914fde6fe299143ae4601c142738/consumer-secret +1 -0
- data/server/instances/10/notifications/ebdc914fde6fe299143ae4601c142738/producer-secret +1 -0
- data/server/instances/10/notifications/ebdc914fde6fe299143ae4601c142738/subscription.xml +27 -0
- data/server/instances/10/notifications/f26b2b9efc10b9259647cf1a2b934694/consumer-secret +1 -0
- data/server/instances/10/notifications/f26b2b9efc10b9259647cf1a2b934694/producer-secret +1 -0
- data/server/instances/10/notifications/f26b2b9efc10b9259647cf1a2b934694/subscription.xml +27 -0
- data/server/instances/10/notifications/f4e1d7808171fe7c5fab4a99145ea185/consumer-secret +1 -0
- data/server/instances/10/notifications/f4e1d7808171fe7c5fab4a99145ea185/producer-secret +1 -0
- data/server/instances/10/notifications/f4e1d7808171fe7c5fab4a99145ea185/subscription.xml +27 -0
- data/server/instances/10/notifications/f7e947a1b4b32f3dad5debd44fc3236b/consumer-secret +1 -0
- data/server/instances/10/notifications/f7e947a1b4b32f3dad5debd44fc3236b/producer-secret +1 -0
- data/server/instances/10/notifications/f7e947a1b4b32f3dad5debd44fc3236b/subscription.xml +27 -0
- data/server/instances/10/notifications/fbf5d0ae050a50e8a2fca6bc60f5b8d6/consumer-secret +1 -0
- data/server/instances/10/notifications/fbf5d0ae050a50e8a2fca6bc60f5b8d6/producer-secret +1 -0
- data/server/instances/10/notifications/fbf5d0ae050a50e8a2fca6bc60f5b8d6/subscription.xml +27 -0
- data/server/instances/10/properties.xml +388 -0
- data/server/instances/11/notifications/134c18da209261bc409ccd137b2e46d3/consumer-secret +1 -0
- data/server/instances/11/notifications/134c18da209261bc409ccd137b2e46d3/producer-secret +1 -0
- data/server/instances/11/notifications/134c18da209261bc409ccd137b2e46d3/subscription.xml +27 -0
- data/server/instances/11/notifications/48862f47f66e8229582bc91fbc38a512/consumer-secret +1 -0
- data/server/instances/11/notifications/48862f47f66e8229582bc91fbc38a512/producer-secret +1 -0
- data/server/instances/11/notifications/48862f47f66e8229582bc91fbc38a512/subscription.xml +5 -0
- data/server/instances/11/properties.xml +517 -0
- data/server/instances/2/notifications/0bbfabbebf46b850383b4e1d7bd926e3/consumer-secret +1 -0
- data/server/instances/2/notifications/0bbfabbebf46b850383b4e1d7bd926e3/producer-secret +1 -0
- data/server/instances/2/notifications/0bbfabbebf46b850383b4e1d7bd926e3/subscription.xml +27 -0
- data/server/instances/2/notifications/1d426895d19caa1471c713e80cc3c845/consumer-secret +1 -0
- data/server/instances/2/notifications/1d426895d19caa1471c713e80cc3c845/producer-secret +1 -0
- data/server/instances/2/notifications/1d426895d19caa1471c713e80cc3c845/subscription.xml +27 -0
- data/server/instances/2/notifications/292c8983aa798f0c5ced5ddc4b58abe4/consumer-secret +1 -0
- data/server/instances/2/notifications/292c8983aa798f0c5ced5ddc4b58abe4/producer-secret +1 -0
- data/server/instances/2/notifications/292c8983aa798f0c5ced5ddc4b58abe4/subscription.xml +27 -0
- data/server/instances/2/notifications/332c3026c8ad3075b092bd7e7a2b4f71/consumer-secret +1 -0
- data/server/instances/2/notifications/332c3026c8ad3075b092bd7e7a2b4f71/producer-secret +1 -0
- data/server/instances/2/notifications/332c3026c8ad3075b092bd7e7a2b4f71/subscription.xml +27 -0
- data/server/instances/2/notifications/d377446918808d23d03291fc1140883c/consumer-secret +1 -0
- data/server/instances/2/notifications/d377446918808d23d03291fc1140883c/producer-secret +1 -0
- data/server/instances/2/notifications/d377446918808d23d03291fc1140883c/subscription.xml +27 -0
- data/server/instances/2/notifications/d5b65c7cbff5d259e4ee8405190ec558/consumer-secret +1 -0
- data/server/instances/2/notifications/d5b65c7cbff5d259e4ee8405190ec558/producer-secret +1 -0
- data/server/instances/2/notifications/d5b65c7cbff5d259e4ee8405190ec558/subscription.xml +27 -0
- data/server/instances/2/notifications/d7ee4fedabb402dc43986dfa199e6768/consumer-secret +1 -0
- data/server/instances/2/notifications/d7ee4fedabb402dc43986dfa199e6768/producer-secret +1 -0
- data/server/instances/2/notifications/d7ee4fedabb402dc43986dfa199e6768/subscription.xml +5 -0
- data/server/instances/2/properties.xml +517 -0
- data/server/instances/3/notifications/27195e2503deaf25b3291394fe97985c/consumer-secret +1 -0
- data/server/instances/3/notifications/27195e2503deaf25b3291394fe97985c/producer-secret +1 -0
- data/server/instances/3/notifications/27195e2503deaf25b3291394fe97985c/subscription.xml +5 -0
- data/server/instances/3/notifications/6cec45935d78709a4aa6622491006f4b/consumer-secret +1 -0
- data/server/instances/3/notifications/6cec45935d78709a4aa6622491006f4b/producer-secret +1 -0
- data/server/instances/3/notifications/6cec45935d78709a4aa6622491006f4b/subscription.xml +27 -0
- data/server/instances/3/notifications/755542b2fb8d0c8fb9add29e012ec707/consumer-secret +1 -0
- data/server/instances/3/notifications/755542b2fb8d0c8fb9add29e012ec707/producer-secret +1 -0
- data/server/instances/3/notifications/755542b2fb8d0c8fb9add29e012ec707/subscription.xml +27 -0
- data/server/instances/3/properties.xml +517 -0
- data/server/instances/4/notifications/151e90db818eb5812905257a8eb7cea4/consumer-secret +1 -0
- data/server/instances/4/notifications/151e90db818eb5812905257a8eb7cea4/producer-secret +1 -0
- data/server/instances/4/notifications/151e90db818eb5812905257a8eb7cea4/subscription.xml +5 -0
- data/server/instances/4/notifications/a89df398fcc088c067c39ae3974ec57f/consumer-secret +1 -0
- data/server/instances/4/notifications/a89df398fcc088c067c39ae3974ec57f/producer-secret +1 -0
- data/server/instances/4/notifications/a89df398fcc088c067c39ae3974ec57f/subscription.xml +27 -0
- data/server/instances/4/properties.xml +517 -0
- data/server/instances/5/notifications/02ebbf888bd3efd11924f4c416d784e4/consumer-secret +1 -0
- data/server/instances/5/notifications/02ebbf888bd3efd11924f4c416d784e4/producer-secret +1 -0
- data/server/instances/5/notifications/02ebbf888bd3efd11924f4c416d784e4/subscription.xml +27 -0
- data/server/instances/5/notifications/0b9589d847cccf768013b6082893bce6/consumer-secret +1 -0
- data/server/instances/5/notifications/0b9589d847cccf768013b6082893bce6/producer-secret +1 -0
- data/server/instances/5/notifications/0b9589d847cccf768013b6082893bce6/subscription.xml +5 -0
- data/server/instances/5/properties.xml +517 -0
- data/server/instances/6/notifications/23da9f5c4548f384d625e6d12b3ebe2d/consumer-secret +1 -0
- data/server/instances/6/notifications/23da9f5c4548f384d625e6d12b3ebe2d/producer-secret +1 -0
- data/server/instances/6/notifications/23da9f5c4548f384d625e6d12b3ebe2d/subscription.xml +5 -0
- data/server/instances/6/notifications/282e7077e9c5b9972413cc92a6dcffc3/consumer-secret +1 -0
- data/server/instances/6/notifications/282e7077e9c5b9972413cc92a6dcffc3/producer-secret +1 -0
- data/server/instances/6/notifications/282e7077e9c5b9972413cc92a6dcffc3/subscription.xml +27 -0
- data/server/instances/6/notifications/7e57d7438db8210766eab6873124dc02/consumer-secret +1 -0
- data/server/instances/6/notifications/7e57d7438db8210766eab6873124dc02/producer-secret +1 -0
- data/server/instances/6/notifications/7e57d7438db8210766eab6873124dc02/subscription.xml +27 -0
- data/server/instances/6/properties.xml +517 -0
- data/server/instances/7/notifications/7276b795b5ed2f6638473526d9b1b1e1/consumer-secret +1 -0
- data/server/instances/7/notifications/7276b795b5ed2f6638473526d9b1b1e1/producer-secret +1 -0
- data/server/instances/7/notifications/7276b795b5ed2f6638473526d9b1b1e1/subscription.xml +27 -0
- data/server/instances/7/notifications/f3fbbf27fcbcc02a9f8a614326461a5c/consumer-secret +1 -0
- data/server/instances/7/notifications/f3fbbf27fcbcc02a9f8a614326461a5c/producer-secret +1 -0
- data/server/instances/7/notifications/f3fbbf27fcbcc02a9f8a614326461a5c/subscription.xml +5 -0
- data/server/instances/7/properties.xml +517 -0
- data/server/instances/8/notifications/2854ed5a8f97a33d31f908f67544ec62/consumer-secret +1 -0
- data/server/instances/8/notifications/2854ed5a8f97a33d31f908f67544ec62/producer-secret +1 -0
- data/server/instances/8/notifications/2854ed5a8f97a33d31f908f67544ec62/subscription.xml +27 -0
- data/server/instances/8/notifications/595259518a5cb2ce286bb39840f7a64c/consumer-secret +1 -0
- data/server/instances/8/notifications/595259518a5cb2ce286bb39840f7a64c/producer-secret +1 -0
- data/server/instances/8/notifications/595259518a5cb2ce286bb39840f7a64c/subscription.xml +5 -0
- data/server/instances/8/properties.xml +517 -0
- data/server/instances/9/notifications/54e96913d66f1dd69ec82d2b52268232/consumer-secret +1 -0
- data/server/instances/9/notifications/54e96913d66f1dd69ec82d2b52268232/producer-secret +1 -0
- data/server/instances/9/notifications/54e96913d66f1dd69ec82d2b52268232/subscription.xml +5 -0
- data/server/instances/9/notifications/5debc1fd138fdc80940cd5647003ed45/consumer-secret +1 -0
- data/server/instances/9/notifications/5debc1fd138fdc80940cd5647003ed45/producer-secret +1 -0
- data/server/instances/9/notifications/5debc1fd138fdc80940cd5647003ed45/subscription.xml +27 -0
- data/server/instances/9/properties.xml +517 -0
- data/server/resources/properties.init +351 -0
- data/server/resources/properties.schema.active +79 -0
- data/server/resources/properties.schema.finished +79 -0
- data/server/resources/properties.schema.inactive +79 -0
- data/server/resources/topics.xml +55 -0
- data/server/server.rb +25 -0
- data/server/todo.txt +20 -0
- data/test/delete.rb +27 -0
- data/test/load.rb +55 -0
- data/test/testset.xml +297 -0
- metadata +382 -0
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
<html>
|
|
18
|
+
<head>
|
|
19
|
+
<title>WfAdaptor Demo</title>
|
|
20
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
|
21
|
+
<script type="text/javascript" src="../jquery.min.js"></script>
|
|
22
|
+
<script type="text/javascript" src="../jquery.svgdom.js"></script>
|
|
23
|
+
<script type="text/javascript" src="../underscore.min.js"></script>
|
|
24
|
+
<script type="text/javascript" src="../contextmenu.js"></script>
|
|
25
|
+
<script type="text/javascript" src="../wfadaptor.js"></script>
|
|
26
|
+
<script type="text/javascript" src="../../js/wfadaptor.cpee.js"></script>
|
|
27
|
+
<link rel="stylesheet" href="../wfadaptor.css" type="text/css"/>
|
|
28
|
+
<link rel="stylesheet" href="../contextmenu.css" type="text/css"/>
|
|
29
|
+
<script type="text/javascript">
|
|
30
|
+
var adaptor = null;
|
|
31
|
+
function click_update_graph() {
|
|
32
|
+
console.log("Demo: Graph Update");
|
|
33
|
+
var then = new Date();
|
|
34
|
+
adaptor.set_description($('#description').val());
|
|
35
|
+
$('#t_new').text((new Date()).getTime() - then.getTime() + 'ms');
|
|
36
|
+
}
|
|
37
|
+
function update_event() {
|
|
38
|
+
console.log("Demo: update notification");
|
|
39
|
+
$('#description').val(adaptor.get_description);
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
</head>
|
|
44
|
+
<body>
|
|
45
|
+
<table style="background: ThreeDShadow; width: 100%; height: 100%;" border="0">
|
|
46
|
+
<tr>
|
|
47
|
+
<td style="text-align:center; vertical-align:middle"><button type="button" onclick="click_update_graph();">Update Graph >>> </button></td>
|
|
48
|
+
<td style="text-align:center; vertical-align:middle" colspan="2"><b><font size="+2">Workflow Graph</font></b></td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr height="95%">
|
|
51
|
+
<td width="40%" style="vertical-align:middle; text-align:center"><!-- {{{ -->
|
|
52
|
+
<textarea style="width:98%;height:98%" id="description">
|
|
53
|
+
<description xmlns="http://cpee.org/ns/description/1.0">
|
|
54
|
+
<call/>
|
|
55
|
+
<choose>
|
|
56
|
+
<alternative>
|
|
57
|
+
<call/>
|
|
58
|
+
</alternative>
|
|
59
|
+
<alternative>
|
|
60
|
+
<call/>
|
|
61
|
+
</alternative>
|
|
62
|
+
</choose>
|
|
63
|
+
</description>
|
|
64
|
+
</textarea>
|
|
65
|
+
</td><!-- }}} -->
|
|
66
|
+
<td style="vertical-align: top"><!-- {{{ -->
|
|
67
|
+
<h3>New Graph Version -> Built-Time:<span id="t_new">00</span></h3>
|
|
68
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="600" width="300" xmlns:xlink="http://www.w3.org/1999/xlink" id="drawing_area">
|
|
69
|
+
</svg>
|
|
70
|
+
</td><!-- }}} -->
|
|
71
|
+
</tr>
|
|
72
|
+
</table>
|
|
73
|
+
<script type="text/javascript">
|
|
74
|
+
var then = new Date();
|
|
75
|
+
adaptor = new WfAdaptor();
|
|
76
|
+
create_cpee_elements(adaptor);
|
|
77
|
+
adaptor.set_svg_container($('#drawing_area'));
|
|
78
|
+
adaptor.set_description($('#description').val(), true);
|
|
79
|
+
$('#t_new').text((new Date()).getTime() - then.getTime() + 'ms');
|
|
80
|
+
adaptor.notify = update_event;
|
|
81
|
+
//console.log(adaptor.get_description());
|
|
82
|
+
</script>
|
|
83
|
+
</body>
|
|
84
|
+
</html>
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
<html>
|
|
18
|
+
<head>
|
|
19
|
+
<title>Documentation: WfAdaptor</title>
|
|
20
|
+
</head>
|
|
21
|
+
<body>
|
|
22
|
+
<h1>Content</h1>
|
|
23
|
+
<!-- {{{ -->
|
|
24
|
+
<ol>
|
|
25
|
+
<li><a href="#classes">Classes</a>
|
|
26
|
+
<ol style="list-style-type: lower-alpha;">
|
|
27
|
+
<li><a href="#adaptor">WfAdaptor</a></li>
|
|
28
|
+
<li><a href="#description">WfDescription</a></li>
|
|
29
|
+
<li><a href="#illustrator">WfIllustrator</a></li>
|
|
30
|
+
</ol>
|
|
31
|
+
</li>
|
|
32
|
+
<li><a target="_blank" href="demo1.html">Demo: comprehensive description</a>
|
|
33
|
+
<li><a target="_blank" href="demo2.html">Demo: workflow adaption</a>
|
|
34
|
+
</li>
|
|
35
|
+
</ol>
|
|
36
|
+
<!-- }}} -->
|
|
37
|
+
<h1>Classes</h1>
|
|
38
|
+
<!-- {{{ -->
|
|
39
|
+
<a name="classes">
|
|
40
|
+
<!-- }}} -->
|
|
41
|
+
<h2>WfAdaptor</h2>
|
|
42
|
+
<!-- {{{ -->
|
|
43
|
+
<a name="adaptor">
|
|
44
|
+
<!-- }}} -->
|
|
45
|
+
<h2>WfDescription</h2>
|
|
46
|
+
<!-- {{{ -->
|
|
47
|
+
<a name="description">
|
|
48
|
+
<!-- }}} -->
|
|
49
|
+
<h2>WfIllustrator</h2>
|
|
50
|
+
<!-- {{{ -->
|
|
51
|
+
<a name="illustrator">
|
|
52
|
+
<!-- }}} -->
|
|
53
|
+
</body>
|
|
54
|
+
</html>
|
|
@@ -0,0 +1,217 @@
|
|
|
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
|
+
/* Browser Bug, set textarea explicitly */
|
|
18
|
+
svg {
|
|
19
|
+
fill: #DDDDDD;
|
|
20
|
+
fill-opacity:1;
|
|
21
|
+
display:inline;
|
|
22
|
+
margin:0;
|
|
23
|
+
padding:0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
svg rect.group {
|
|
27
|
+
fill: Highlight;
|
|
28
|
+
fill-opacity: 0.2;
|
|
29
|
+
}
|
|
30
|
+
svg .clickable { cursor: pointer; }
|
|
31
|
+
|
|
32
|
+
svg g.passive .rfill {
|
|
33
|
+
fill: #729fcf;
|
|
34
|
+
fill-opacity:1;
|
|
35
|
+
}
|
|
36
|
+
svg g.active .rfill {
|
|
37
|
+
fill: #ef2929;
|
|
38
|
+
fill-opacity:1;
|
|
39
|
+
}
|
|
40
|
+
svg g.vote .rfill {
|
|
41
|
+
fill: #8ae234;
|
|
42
|
+
fill-opacity:1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
svg line.ourline, svg path.ourline {
|
|
46
|
+
stroke-opacity:1;
|
|
47
|
+
stroke:#000000;
|
|
48
|
+
stroke-width: 2;
|
|
49
|
+
fill: none;
|
|
50
|
+
}
|
|
51
|
+
svg rect.block {
|
|
52
|
+
stroke-width: 1;
|
|
53
|
+
stroke-dasharray: 3,5;
|
|
54
|
+
stroke: #000000;
|
|
55
|
+
fill: none;
|
|
56
|
+
}
|
|
57
|
+
svg rect.tile {
|
|
58
|
+
stroke-width: 1;
|
|
59
|
+
stroke-dasharray: 3,5;
|
|
60
|
+
fill: Highlight;
|
|
61
|
+
fill-opacity: 0.3;
|
|
62
|
+
display: none;
|
|
63
|
+
}
|
|
64
|
+
svg .stand {
|
|
65
|
+
fill:#ffffff;
|
|
66
|
+
fill-opacity:1;
|
|
67
|
+
stroke:#000000;
|
|
68
|
+
stroke-width:2.06896567;
|
|
69
|
+
stroke-linecap:round;
|
|
70
|
+
stroke-linejoin:round;
|
|
71
|
+
stroke-miterlimit:4;
|
|
72
|
+
stroke-opacity:1;
|
|
73
|
+
stroke-dasharray:none;
|
|
74
|
+
}
|
|
75
|
+
svg .black {
|
|
76
|
+
fill:#000000;
|
|
77
|
+
fill-opacity:1;
|
|
78
|
+
stroke:#000000;
|
|
79
|
+
stroke-width:2.06896567;
|
|
80
|
+
stroke-linecap:round;
|
|
81
|
+
stroke-linejoin:round;
|
|
82
|
+
stroke-miterlimit:4;
|
|
83
|
+
stroke-opacity:1;
|
|
84
|
+
stroke-dasharray:none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
svg .unknown {
|
|
88
|
+
fill:#FF0000;
|
|
89
|
+
fill-opacity:1;
|
|
90
|
+
stroke:#000000;
|
|
91
|
+
stroke-width:2.06896567;
|
|
92
|
+
stroke-linecap:round;
|
|
93
|
+
stroke-linejoin:round;
|
|
94
|
+
stroke-miterlimit:4;
|
|
95
|
+
stroke-opacity:1;
|
|
96
|
+
stroke-dasharray:none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
svg .gen {
|
|
100
|
+
fill:ButtonFace;
|
|
101
|
+
fill-opacity:1;
|
|
102
|
+
stroke-opacity:0.7;
|
|
103
|
+
stroke:#000000;
|
|
104
|
+
stroke-width:2.06896567;
|
|
105
|
+
stroke-linecap:round;
|
|
106
|
+
stroke-linejoin:round;
|
|
107
|
+
stroke-miterlimit:4;
|
|
108
|
+
stroke-opacity:1;
|
|
109
|
+
stroke-dasharray:none;
|
|
110
|
+
}
|
|
111
|
+
svg .standwithout {
|
|
112
|
+
fill:#ffffff;
|
|
113
|
+
fill-opacity:1;
|
|
114
|
+
}
|
|
115
|
+
svg text.normal {
|
|
116
|
+
font-size:20px;
|
|
117
|
+
font-style:normal;
|
|
118
|
+
font-variant:normal;
|
|
119
|
+
font-weight:bold;
|
|
120
|
+
font-stretch:normal;
|
|
121
|
+
text-align:center;
|
|
122
|
+
line-height:125%;
|
|
123
|
+
writing-mode:lr-tb;
|
|
124
|
+
text-anchor:middle;
|
|
125
|
+
color:#000000;
|
|
126
|
+
fill:#000000;
|
|
127
|
+
fill-opacity:1;
|
|
128
|
+
stroke:none;
|
|
129
|
+
font-family:Arial;
|
|
130
|
+
}
|
|
131
|
+
svg text.inverted {
|
|
132
|
+
font-size:20px;
|
|
133
|
+
font-style:normal;
|
|
134
|
+
font-variant:normal;
|
|
135
|
+
font-weight:bold;
|
|
136
|
+
font-stretch:normal;
|
|
137
|
+
text-align:center;
|
|
138
|
+
line-height:125%;
|
|
139
|
+
writing-mode:lr-tb;
|
|
140
|
+
text-anchor:middle;
|
|
141
|
+
color:#ffffff;
|
|
142
|
+
fill:#ffffff;
|
|
143
|
+
fill-opacity:1;
|
|
144
|
+
stroke:none;
|
|
145
|
+
font-family:Arial;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
svg text.super {
|
|
149
|
+
font-size:11px;
|
|
150
|
+
font-style:normal;
|
|
151
|
+
font-variant:normal;
|
|
152
|
+
font-weight:bold;
|
|
153
|
+
font-stretch:normal;
|
|
154
|
+
text-align:center;
|
|
155
|
+
line-height:100%;
|
|
156
|
+
writing-mode:lr-tb;
|
|
157
|
+
text-anchor:start;
|
|
158
|
+
color:#000000;
|
|
159
|
+
fill:#000000;
|
|
160
|
+
fill-opacity:1;
|
|
161
|
+
stroke:none;
|
|
162
|
+
font-family:Arial;
|
|
163
|
+
}
|
|
164
|
+
svg tspan.active {
|
|
165
|
+
fill:#cc0000;
|
|
166
|
+
display: none;
|
|
167
|
+
}
|
|
168
|
+
svg tspan.vote {
|
|
169
|
+
fill:#73d216;
|
|
170
|
+
display: none;
|
|
171
|
+
}
|
|
172
|
+
svg tspan.colon {
|
|
173
|
+
display: none;
|
|
174
|
+
}
|
|
175
|
+
svg tspan.necessary {
|
|
176
|
+
display: inline;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
svg text.normallarge {
|
|
180
|
+
font-size:25px;
|
|
181
|
+
font-style:normal;
|
|
182
|
+
font-variant:normal;
|
|
183
|
+
font-weight:bold;
|
|
184
|
+
font-stretch:normal;
|
|
185
|
+
text-align:center;
|
|
186
|
+
line-height:125%;
|
|
187
|
+
writing-mode:lr-tb;
|
|
188
|
+
text-anchor:middle;
|
|
189
|
+
color:#000000;
|
|
190
|
+
fill:#000000;
|
|
191
|
+
fill-opacity:1;
|
|
192
|
+
stroke:none;
|
|
193
|
+
font-family:Arial;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
svg text.small {
|
|
197
|
+
font-size:14px;
|
|
198
|
+
font-style:normal;
|
|
199
|
+
font-variant:normal;
|
|
200
|
+
font-weight:bold;
|
|
201
|
+
font-stretch:normal;
|
|
202
|
+
text-align:center;
|
|
203
|
+
line-height:125%;
|
|
204
|
+
writing-mode:lr-tb;
|
|
205
|
+
text-anchor:middle;
|
|
206
|
+
color:#000000;
|
|
207
|
+
fill:#000000;
|
|
208
|
+
fill-opacity:1;
|
|
209
|
+
stroke:none;
|
|
210
|
+
font-family:Arial;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
#arrow {
|
|
214
|
+
stroke: #000000;
|
|
215
|
+
stroke-width: 2;
|
|
216
|
+
fill: #000000;
|
|
217
|
+
}
|
|
@@ -0,0 +1,410 @@
|
|
|
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
|
+
// TODO: changes in svg-script:
|
|
18
|
+
// 1) drawing frunctions
|
|
19
|
+
// 2) creation of svg-container (Bug: arrows on lines)
|
|
20
|
+
// 3) after-function to insert using namespace of description
|
|
21
|
+
|
|
22
|
+
// WfAdaptor:
|
|
23
|
+
// Handles interaction between Illustartor and Description
|
|
24
|
+
// e.g. Event fires to Adaptor to insert Element and Illustrator and Description do it
|
|
25
|
+
function WfAdaptor(manifesto) { // Controller {{{
|
|
26
|
+
|
|
27
|
+
// public variables {{{
|
|
28
|
+
this.illustrator;
|
|
29
|
+
this.description;
|
|
30
|
+
this.elements = {};
|
|
31
|
+
// }}}
|
|
32
|
+
|
|
33
|
+
// public variables {{{
|
|
34
|
+
var illustrator;
|
|
35
|
+
var description;
|
|
36
|
+
// }}}
|
|
37
|
+
|
|
38
|
+
// helper funtions
|
|
39
|
+
this.set_description = function(desc) { // public {{{
|
|
40
|
+
this.description.set_description(desc);
|
|
41
|
+
} // }}}
|
|
42
|
+
this.get_description = function() { // public {{{
|
|
43
|
+
return description.get_description();
|
|
44
|
+
} // }}}
|
|
45
|
+
this.notify = function() { // public {{{
|
|
46
|
+
} // }}}
|
|
47
|
+
this.set_svg_container = function (container) { // {{{
|
|
48
|
+
illustrator.set_container(container); // TODO: shadowing the container element
|
|
49
|
+
} // }}}
|
|
50
|
+
|
|
51
|
+
// initialze
|
|
52
|
+
this.illustrator = illustrator = new WfIllustrator(this);
|
|
53
|
+
this.description = description = new WfDescription(this, this.illustrator);
|
|
54
|
+
|
|
55
|
+
manifestation = new manifesto(this);
|
|
56
|
+
this.illustrator.noarrow = manifestation.noarrow;
|
|
57
|
+
for(element in manifestation.elements) {
|
|
58
|
+
this.illustrator.elements[element] = manifestation.elements[element].illustrator;
|
|
59
|
+
this.description.elements[element] = manifestation.elements[element].description;
|
|
60
|
+
this.elements[element] = manifestation.elements[element].adaptor;
|
|
61
|
+
}
|
|
62
|
+
} // }}}
|
|
63
|
+
|
|
64
|
+
// WfIllustrator:
|
|
65
|
+
// Is in charge of displaying the Graph. It is further able insert and remove elements with given ID's from the illsutration.
|
|
66
|
+
function WfIllustrator(wf_adaptor) { // View {{{
|
|
67
|
+
// Variable {{{
|
|
68
|
+
// public
|
|
69
|
+
var height = this.height = 40;
|
|
70
|
+
var width = this.width = 40;
|
|
71
|
+
var noarrow = this.noarrow = [];
|
|
72
|
+
var elements = this.elements = {};
|
|
73
|
+
var svg = this.svg = {};
|
|
74
|
+
this.draw = {};
|
|
75
|
+
// private
|
|
76
|
+
var adaptor = null;
|
|
77
|
+
// }}}
|
|
78
|
+
// Generic Functions {{{
|
|
79
|
+
this.set_container = function(con) { // {{{
|
|
80
|
+
svg.container = con;
|
|
81
|
+
svg.container.append($X('<defs xmlns="http://www.w3.org/2000/svg">' +
|
|
82
|
+
'<marker id="arrow" viewBox="0 0 10 10" refX="33" refY="5" orient="auto" markerUnits="strokeWidth" markerWidth="4.5" makerHeight="4.5">' +
|
|
83
|
+
'<path d="m 2 2 l 6 3 l -6 3 z"/>' +
|
|
84
|
+
'</marker>' +
|
|
85
|
+
'</defs>'));
|
|
86
|
+
svg.defs = {};
|
|
87
|
+
svg.defs['unknown'] = $X('<g xmlns="http://www.w3.org/2000/svg" class="unknown">' +
|
|
88
|
+
'<circle cx="15" cy="15" r="14" class="unkown"/>' +
|
|
89
|
+
'<text transform="translate(15,20)" class="normal">?</text>' +
|
|
90
|
+
'</g>');
|
|
91
|
+
for(element in elements)
|
|
92
|
+
if(elements[element].svg() != false) {
|
|
93
|
+
var sym = $X('<g xmlns="http://www.w3.org/2000/svg"/>').append(elements[element].svg().children()); // append all children to symbol
|
|
94
|
+
$.each(elements[element].svg().attr('class').split(/\s+/), function(index, item) { sym.addClass(item); }); // copy all classes from the root node
|
|
95
|
+
svg.defs[element] = sym;
|
|
96
|
+
}
|
|
97
|
+
} // }}}
|
|
98
|
+
var clear = this.clear = function() { // {{{
|
|
99
|
+
$('> :not(defs)', svg.container).each(function() {$(this).remove()});
|
|
100
|
+
} // }}}
|
|
101
|
+
this.set_svg = function(graph) { // {{{
|
|
102
|
+
if(graph.max.row < 1) graph.max.row = 1;
|
|
103
|
+
if(graph.max.col < 1) graph.max.col = 1;
|
|
104
|
+
svg.container.attr({'height': (graph.max.row+0.3)*height, 'width':(graph.max.col+0.65)*width});
|
|
105
|
+
svg.container.append(graph.svg);
|
|
106
|
+
} // }}}
|
|
107
|
+
// }}}
|
|
108
|
+
// Helper Functions {{{
|
|
109
|
+
var draw_symbol = this.draw.draw_symbol = function (sym_name, id, title, row, col, group) { // {{{
|
|
110
|
+
if(elements[sym_name] == undefined || elements[sym_name].svg == undefined) sym_name = 'unknown';
|
|
111
|
+
var g = $X('<g class="element" element-id="' + id + '" transform="translate(' + String((col*width)-((width*0.39))) + ',' + String(row*height-((height*0.74))) + ')" xmlns="http://www.w3.org/2000/svg">' +
|
|
112
|
+
'<text class="super" transform="translate(30,8.4)">' +
|
|
113
|
+
'<tspan class="active">0</tspan>' +
|
|
114
|
+
'<tspan class="colon">,</tspan>' +
|
|
115
|
+
'<tspan class="vote">0</tspan>' +
|
|
116
|
+
'</text>' +
|
|
117
|
+
'</g>');
|
|
118
|
+
var sym = svg.defs[sym_name].clone();
|
|
119
|
+
sym.prepend($X('<title xmlns="http://www.w3.org/2000/svg">' + title + '</title>'));
|
|
120
|
+
sym.attr('class','activities');
|
|
121
|
+
g.append(sym);
|
|
122
|
+
|
|
123
|
+
// Binding events for symbol
|
|
124
|
+
for(event_name in adaptor.elements[sym_name]) {
|
|
125
|
+
sym.bind(event_name, {'function_call':adaptor.elements[sym_name][event_name]}, function(e) { e.data.function_call($(this).parents(':first').attr('element-id'),e)});
|
|
126
|
+
if(event_name == 'mousedown') sym.bind('contextmenu', false);
|
|
127
|
+
}
|
|
128
|
+
if(group) {group.append(g);}
|
|
129
|
+
else {svg.container.children('g:first').append(g);}
|
|
130
|
+
return g;
|
|
131
|
+
} // }}}
|
|
132
|
+
var draw_border = this.draw.draw_border = function(id, p1, p2, group) { // {{{
|
|
133
|
+
group.prepend($X('<rect element-id="' + id + '" x="' + (p1.col-0.50)*width + '" ' +
|
|
134
|
+
'y="' + (p1.row-0.80)*height + '" ' +
|
|
135
|
+
'width="' + ((p2.col+1.00)-p1.col)*width + '" ' +
|
|
136
|
+
'height="' + ((p2.row+1.00)-p1.row)*height +'" ' +
|
|
137
|
+
'class="block" rx="15" ry="15" xmlns="http://www.w3.org/2000/svg"/>'));
|
|
138
|
+
} // }}}
|
|
139
|
+
var draw_tile = this.draw.draw_tile = function(id, p1, p2, group) { // {{{
|
|
140
|
+
group.prepend($X('<rect element-id="' + id + '" x="' + (p1.col-0.50)*width + '" ' +
|
|
141
|
+
'y="' + (p1.row-0.80)*height + '" ' +
|
|
142
|
+
'width="' + ((p2.col+1.00)-p1.col)*width + '" ' +
|
|
143
|
+
'height="' + ((p2.row+1.00)-p1.row)*height +'" ' +
|
|
144
|
+
'class="tile" rx="15" ry="15" xmlns="http://www.w3.org/2000/svg"/>'));
|
|
145
|
+
} // }}}
|
|
146
|
+
var draw_connection = this.draw.draw_connection = function(group, start, end, max_line, num_lines, arrow) { // {{{
|
|
147
|
+
if(((end['row']-start['row']) == 0) && ((end['col']-start['col']) == 0)) return;
|
|
148
|
+
var line;
|
|
149
|
+
if (arrow)
|
|
150
|
+
line = $X('<path xmlns="http://www.w3.org/2000/svg" class="ourline" marker-end="url(#arrow)"/>');
|
|
151
|
+
else
|
|
152
|
+
line = $X('<path xmlns="http://www.w3.org/2000/svg" class="ourline"/>');
|
|
153
|
+
if (end['row']-start['row'] == 0 || end['col']-start['col'] == 0) { // straight line
|
|
154
|
+
line.attr("d", "M " + String(start['col']*width) + "," + String(start['row']*height-15) +" "+
|
|
155
|
+
String(end['col']*width) + "," + String(end['row']*height-15)
|
|
156
|
+
);
|
|
157
|
+
} else if (end['row']-start['row'] > 0) { // downwards
|
|
158
|
+
if (end['col']-start['col'] > 0) {// left - right
|
|
159
|
+
line.attr("d", "M " + String(start['col']*width) + "," + String(start['row']*height-15) +" "+
|
|
160
|
+
String(start['col']*width+14) + "," + String((end['row']-1)*height) +" "+ // first turn of hotizontal-line going away from node
|
|
161
|
+
String(end['col']*width) + "," + String((end['row']-1)*height) +" "+
|
|
162
|
+
String(end['col']*width) + "," + String(end['row']*height-15)
|
|
163
|
+
);
|
|
164
|
+
} else { // right - left
|
|
165
|
+
line.attr("d", "M " + String(start['col']*width) + "," + String(start['row']*height-15) +" "+
|
|
166
|
+
String(start['col']*width) + "," + String(end['row']*height-35) +" "+
|
|
167
|
+
String(end['col']*width+14) + "," + String(end['row']*height-35) +" "+ // last turn of horizontal-line going into the node
|
|
168
|
+
String(end['col']*width) + "," + String(end['row']*height-15)
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
} else if(end['row']-start['row'] < 0) { // upwards
|
|
172
|
+
if(num_lines > 1) {// ??? no idea
|
|
173
|
+
line.attr("d", "M " + String(start['col']*width) + "," + String(start['row']*height-15) +" "+
|
|
174
|
+
String(start['col']*width) + "," + String((max_line-1)*height+5) +" "+
|
|
175
|
+
String(end['col']*width+20) + "," + String((max_line-1)*height+5) +" "+
|
|
176
|
+
String(end['col']*width+20) + "," + String(end['row']*height+25)+" "+
|
|
177
|
+
String(end['col']*width) + "," + String(end['row']*height-15)
|
|
178
|
+
);
|
|
179
|
+
} else {
|
|
180
|
+
line.attr("d", "M " + String(start['col']*width) + "," + String(start['row']*height-15) +" "+
|
|
181
|
+
String(end['col']*width+20) + "," + String(start['row']*height-15) +" "+
|
|
182
|
+
String(end['col']*width+20) + "," + String(end['row']*height+25)+" "+
|
|
183
|
+
String(end['col']*width) + "," + String(end['row']*height-15)
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Seems to solve injection groups-line problem, but I guess it will caus problem when collapsing elements
|
|
188
|
+
//if(group) {group.prepend(line);}
|
|
189
|
+
//else
|
|
190
|
+
{svg.container.append(line);}
|
|
191
|
+
} // }}}
|
|
192
|
+
// }}}
|
|
193
|
+
// Initialize {{{
|
|
194
|
+
adaptor = wf_adaptor;
|
|
195
|
+
// }}}
|
|
196
|
+
} // }}}
|
|
197
|
+
|
|
198
|
+
// WfDescription:
|
|
199
|
+
// Manages the description. Is is further able to add/remove elements from the controlflow description.
|
|
200
|
+
function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
|
|
201
|
+
// public variables
|
|
202
|
+
var elements = this.elements = {};
|
|
203
|
+
// private variables
|
|
204
|
+
var adaptor;
|
|
205
|
+
var illustrator;
|
|
206
|
+
var description;
|
|
207
|
+
var id_counter = {};
|
|
208
|
+
var update_illustrator = true;
|
|
209
|
+
|
|
210
|
+
// Generic Functions {{{
|
|
211
|
+
this.set_description = function(desc, auto_update) { // public {{{
|
|
212
|
+
if(auto_update != undefined) update_illustrator = auto_update;
|
|
213
|
+
if(typeof desc == "string") {
|
|
214
|
+
description = $($.parseXML(desc));
|
|
215
|
+
} else if(desc instanceof jQuery) {
|
|
216
|
+
description = desc;
|
|
217
|
+
} else {
|
|
218
|
+
alert("WfDescription: unknown description type:\nConstructor-Name: " + desc.constructor + " / TypeOf: " + (typeof desc));
|
|
219
|
+
description = null;
|
|
220
|
+
}
|
|
221
|
+
id_counter = {};
|
|
222
|
+
illustrator.clear();
|
|
223
|
+
var graph = parse(description.children('description').get(0), {'row':0,'col':0});
|
|
224
|
+
illustrator.set_svg(graph);
|
|
225
|
+
} // }}}
|
|
226
|
+
var gd = this.get_description = function() { // public {{{
|
|
227
|
+
var serxml = $(description.get(0).documentElement).clone(true);
|
|
228
|
+
serxml.removeAttr('svg-id');
|
|
229
|
+
$('*[svg-id]',serxml).each(function(){
|
|
230
|
+
$(this).removeAttr('svg-id');
|
|
231
|
+
});
|
|
232
|
+
return serxml.serializeXML();
|
|
233
|
+
} // }}}
|
|
234
|
+
this.get_node_by_svg_id = function(svg_id) { // {{{
|
|
235
|
+
return $('[svg-id = \'' + svg_id + '\']', description);
|
|
236
|
+
} // }}}
|
|
237
|
+
this.get_free_id = function() { // {{{
|
|
238
|
+
var existing = new Array();
|
|
239
|
+
$('*[id]', description).each(function(){existing.push($(this).attr('id'))});
|
|
240
|
+
var id = 1;
|
|
241
|
+
while ($.inArray('a' + id,existing) != -1) {
|
|
242
|
+
id += 1;
|
|
243
|
+
}
|
|
244
|
+
return 'a' + id;
|
|
245
|
+
} // }}}
|
|
246
|
+
var update = this.update = function(svgid) { // {{{
|
|
247
|
+
id_counter = {};
|
|
248
|
+
if(update_illustrator){
|
|
249
|
+
illustrator.clear();
|
|
250
|
+
var graph = parse(description.children('description').get(0), {'row':0,'col':0});
|
|
251
|
+
illustrator.set_svg(graph);
|
|
252
|
+
}
|
|
253
|
+
var newn = $('*[new=true]',description);
|
|
254
|
+
newn.removeAttr('new');
|
|
255
|
+
|
|
256
|
+
if (newn.attr('svg-id') != undefined)
|
|
257
|
+
adaptor.notify(newn.attr('svg-id'));
|
|
258
|
+
else if (svgid != undefined)
|
|
259
|
+
adaptor.notify(svgid);
|
|
260
|
+
else
|
|
261
|
+
console.info('Something went horribly wrong');
|
|
262
|
+
} // }}}
|
|
263
|
+
// }}}
|
|
264
|
+
// Adaption functions {{{
|
|
265
|
+
this.insert_after = function(new_node, target) { // {{{
|
|
266
|
+
var nn;
|
|
267
|
+
if(typeof(new_node) == 'function') {nn = new_node(target);}
|
|
268
|
+
else {nn = new_node;}
|
|
269
|
+
target.after(nn);
|
|
270
|
+
nn.attr('new','true');
|
|
271
|
+
update();
|
|
272
|
+
} // }}}
|
|
273
|
+
this.insert_first_into = function(new_node, target, selector) { // {{{
|
|
274
|
+
var nn;
|
|
275
|
+
if(typeof(new_node) == 'function') {nn = new_node(target);}
|
|
276
|
+
else {nn = new_node;}
|
|
277
|
+
target.prepend(nn);
|
|
278
|
+
nn.attr('new','true');
|
|
279
|
+
update();
|
|
280
|
+
} // }}}
|
|
281
|
+
this.insert_last_into = function(new_node, target, selector) { // {{{
|
|
282
|
+
var nn;
|
|
283
|
+
if(typeof(new_node) == 'function') {nn = new_node(target);}
|
|
284
|
+
else {nn = new_node;}
|
|
285
|
+
target.append(nn);
|
|
286
|
+
nn.attr('new','true');
|
|
287
|
+
update();
|
|
288
|
+
} // }}}
|
|
289
|
+
this.remove = function(selector, target) {//{{{
|
|
290
|
+
var svgid;
|
|
291
|
+
if(selector == undefined) {
|
|
292
|
+
svgid = target.attr('svg-id');
|
|
293
|
+
target.remove()
|
|
294
|
+
} else {
|
|
295
|
+
svgid = $(selector, target).attr('svg-id');
|
|
296
|
+
$(selector, target).remove();
|
|
297
|
+
}
|
|
298
|
+
update(svgid);
|
|
299
|
+
}
|
|
300
|
+
// }}}
|
|
301
|
+
// }}}
|
|
302
|
+
// Helper Functions {{{
|
|
303
|
+
var parse = function(root, parent_pos) { // private {{{
|
|
304
|
+
var pos = jQuery.extend(true, {}, parent_pos);
|
|
305
|
+
var max = {'row': 0,'col': 0};
|
|
306
|
+
var prev = [parent_pos]; // connects parent with child(s), depending on the expansion
|
|
307
|
+
var endnodes = [];
|
|
308
|
+
var root_expansion = illustrator.elements[root.tagName].expansion(root);
|
|
309
|
+
var block = {'max':{}}; // e.g. {'max':{'row':0,'col':0}, 'endpoints':[]};
|
|
310
|
+
var collapsed = false;
|
|
311
|
+
|
|
312
|
+
var group = $X('<g class="group" xmlns="http://www.w3.org/2000/svg"/>');
|
|
313
|
+
|
|
314
|
+
if(root_expansion == 'horizontal') pos.row++;
|
|
315
|
+
if(illustrator.elements[root.tagName].col_shift(root) == true && root_expansion != 'horizontal') pos.col++;
|
|
316
|
+
|
|
317
|
+
if(root.tagName == 'description') { // First parsing {{{
|
|
318
|
+
pos.row++;
|
|
319
|
+
max.row++;
|
|
320
|
+
$(root).attr('svg-id','description');
|
|
321
|
+
group.attr('element-id','group-description');
|
|
322
|
+
illustrator.draw.draw_symbol('start', 'description', 'START', pos.row, pos.col, group);
|
|
323
|
+
} // }}}
|
|
324
|
+
|
|
325
|
+
$(root).children().each(function() {
|
|
326
|
+
// Set SVG-ID {{{
|
|
327
|
+
if($(this).attr('id') == undefined) {
|
|
328
|
+
if(id_counter[this.tagName] == undefined) id_counter[this.tagName] = -1;
|
|
329
|
+
$(this).attr('svg-id', this.tagName + '_' + (++id_counter[this.tagName]));
|
|
330
|
+
$(this).attr('svg-label', '');
|
|
331
|
+
} else {
|
|
332
|
+
$(this).attr('svg-id', $(this).attr('id'));
|
|
333
|
+
if ($(this).children('parameters').length > 0) {
|
|
334
|
+
$(this).attr('svg-label', $('label',$(this).children('parameters')).text());
|
|
335
|
+
} else {
|
|
336
|
+
$(this).attr('svg-label', '');
|
|
337
|
+
}
|
|
338
|
+
} // }}}
|
|
339
|
+
// Calculate next position {{{
|
|
340
|
+
if($(this).attr('collapsed') == undefined || $(this).attr('collapsed') == 'false') { collapsed = false; }
|
|
341
|
+
else { collapsed = true; }
|
|
342
|
+
if(root_expansion == 'vertical') pos.row++;
|
|
343
|
+
if(root_expansion == 'horizontal') pos.col++;
|
|
344
|
+
if(illustrator.elements[this.tagName] != undefined && illustrator.elements[this.tagName].type == 'complex' && !collapsed) {
|
|
345
|
+
if(illustrator.elements[this.tagName] != undefined && !illustrator.elements[this.tagName].svg()) pos.row--;
|
|
346
|
+
// TODO: Remaining problem is the order insode the svg. Thats why the connection is above the icon
|
|
347
|
+
block = parse(this, jQuery.extend(true, {}, pos));
|
|
348
|
+
group.append(block.svg);
|
|
349
|
+
block.svg.attr('id', 'group-' + $(this).attr('svg-id'));
|
|
350
|
+
if(illustrator.elements[this.tagName].endnodes == 'aggregate') endnodes = []; // resets endpoints e.g. potential preceding primitive
|
|
351
|
+
} else {
|
|
352
|
+
if(illustrator.elements[this.tagName] != undefined && illustrator.elements[this.tagName].type == 'primitive' && illustrator.elements[this.tagName].svg()) { // This enables "invisble" elements, by returning false in the SVG function (e.g. constraints)
|
|
353
|
+
block.max.row = pos.row;
|
|
354
|
+
block.max.col = pos.col;
|
|
355
|
+
block.endnodes = (!collapsed ? [pos] : [jQuery.extend(true, {}, pos)]);
|
|
356
|
+
block.svg = group;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// }}}
|
|
360
|
+
// Draw symbol {{{
|
|
361
|
+
var sym_name = '';
|
|
362
|
+
if(!illustrator.elements[this.tagName]) {sym_name = 'unknown';}
|
|
363
|
+
else if(typeof illustrator.elements[this.tagName].resolve_symbol == 'function') {sym_name = illustrator.elements[this.tagName].resolve_symbol(this);}
|
|
364
|
+
else if(typeof illustrator.elements[this.tagName].resolve_symbol == 'string') {sym_name = illustrator.elements[this.tagName].resolve_symbol;}
|
|
365
|
+
else {sym_name = this.tagName;}
|
|
366
|
+
if((illustrator.elements[this.tagName] && illustrator.elements[this.tagName].svg()) || sym_name == 'unknown') {
|
|
367
|
+
illustrator.draw.draw_symbol(sym_name, $(this).attr('svg-id'), $(this).attr('svg-label'), pos.row, pos.col, block.svg).addClass(illustrator.elements[this.tagName] ? illustrator.elements[this.tagName].type : 'primitive unknown');
|
|
368
|
+
} else { console.log("no icon "+ this.tagName);}
|
|
369
|
+
if(illustrator.elements[this.tagName] && illustrator.elements[this.tagName].border) illustrator.draw.draw_border($(this).attr('svg-id'), pos, block.max, block.svg);
|
|
370
|
+
if(illustrator.elements[this.tagName] && illustrator.elements[this.tagName].type == 'complex') illustrator.draw.draw_tile($(this).attr('svg-id'), pos, block.max, block.svg);
|
|
371
|
+
// }}}
|
|
372
|
+
// Calculate Connection {{{
|
|
373
|
+
if(illustrator.elements[this.tagName] != undefined && illustrator.elements[this.tagName].closeblock) { // Close Block if element e.g. loop
|
|
374
|
+
for(node in block.endnodes) illustrator.draw.draw_connection(group, block.endnodes[node], pos, block.max.row+1, block.endnodes.length, true);
|
|
375
|
+
}
|
|
376
|
+
if(illustrator.elements[this.tagName] != undefined && illustrator.elements[this.tagName].endnodes != 'this') {
|
|
377
|
+
for(i in block.endnodes) endnodes.push(block.endnodes[i]); // collects all endpoints from different childs e.g. alternatives from choose
|
|
378
|
+
} else { endnodes = [jQuery.extend(true, {}, pos)]; } // sets this element as only endpoint (aggreagte)
|
|
379
|
+
if(prev[0].row == 0 || prev[0].col == 0) { // this enforces the connection from description to the first element
|
|
380
|
+
illustrator.draw.draw_connection(group, { row: 1, col: 1 }, pos, null, null, true);
|
|
381
|
+
} else {
|
|
382
|
+
if ($.inArray(this.tagName,noarrow) == -1)
|
|
383
|
+
for(node in prev) illustrator.draw.draw_connection(group, prev[node], pos, null, null, true);
|
|
384
|
+
else
|
|
385
|
+
for(node in prev) illustrator.draw.draw_connection(group, prev[node], pos, null, null, false);
|
|
386
|
+
}
|
|
387
|
+
// }}}
|
|
388
|
+
// Prepare next iteration {{{
|
|
389
|
+
if(root_expansion == 'vertical') { prev = jQuery.extend(true, {}, endnodes); pos.row = block.max.row;} // covers e.g. input's for alternative, parallel_branch, ... everything with horizontal expansion
|
|
390
|
+
if(root_expansion == 'horizontal') pos.col = block.max.col;
|
|
391
|
+
if(max.row < block.max.row) max.row = block.max.row;
|
|
392
|
+
if(max.col < block.max.col) max.col = block.max.col;
|
|
393
|
+
// }}}
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
if($(root).children().length == 0) { // empty complex found
|
|
397
|
+
endnodes = [parent_pos];
|
|
398
|
+
max.row = parent_pos.row;
|
|
399
|
+
max.col = parent_pos.col;
|
|
400
|
+
}
|
|
401
|
+
if(illustrator.elements[root.tagName].endnodes == 'this' && illustrator.elements[root.tagName].closeblock == false) {endnodes = [prev];} // closeblock == false, allows loop to close himselfe
|
|
402
|
+
return {'endnodes': endnodes, 'max':max, 'svg':group};
|
|
403
|
+
} // }}}
|
|
404
|
+
// }}}
|
|
405
|
+
|
|
406
|
+
// Initialze {{{
|
|
407
|
+
adaptor = wf_adaptor;
|
|
408
|
+
illustrator = wf_illustrator;
|
|
409
|
+
// }}}
|
|
410
|
+
} // }}}
|