pione 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/History.txt +7 -0
- data/example/DeferredChoice/DeferredChoice.pione +14 -7
- data/{misc → example/DeferredChoice/bin}/ui.xml +11 -6
- data/example/DeferredChoice/pione-package.json +1 -1
- data/example/DeferredChoiceWithPage/DeferredChoiceWithPage.pione +47 -0
- data/example/DeferredChoiceWithPage/etc/index.html +22 -0
- data/example/DeferredChoiceWithPage/pione-package.json +18 -0
- data/example/Interaction/Interaction.pione +27 -0
- data/example/Interaction/bin/show-environment.cgi +45 -0
- data/example/Interaction/etc/.hidden-file.txt +1 -0
- data/example/Interaction/etc/cgi.html +46 -0
- data/example/Interaction/etc/create-files.html +51 -0
- data/example/Interaction/etc/delete-files.html +31 -0
- data/example/Interaction/etc/get-files.html +21 -0
- data/example/Interaction/etc/index.html +18 -0
- data/example/Interaction/etc/list-files.html +36 -0
- data/example/Interaction/pione-package.json +24 -0
- data/lib/pione/agent/job-manager.rb +19 -3
- data/lib/pione/agent/logger.rb +9 -9
- data/lib/pione/agent/messenger.rb +3 -2
- data/lib/pione/agent/task-worker.rb +32 -10
- data/lib/pione/command/option.rb +18 -0
- data/lib/pione/command/pione-client.rb +51 -22
- data/lib/pione/command/pione-interactive.rb +128 -55
- data/lib/pione/command/pione-package-build.rb +3 -3
- data/lib/pione/command/pione-task-worker.rb +23 -10
- data/lib/pione/command/pione-tuple-space-provider.rb +8 -8
- data/lib/pione/command/spawner.rb +28 -1
- data/lib/pione/front/interactive-front.rb +76 -0
- data/lib/pione/global/interactive-variable.rb +26 -0
- data/lib/pione/log/message-log-receiver.rb +4 -2
- data/lib/pione/model/task-worker-broker-model.rb +7 -1
- data/lib/pione/package/package-archiver.rb +16 -9
- data/lib/pione/package/package-handler.rb +6 -0
- data/lib/pione/package/package-info.rb +4 -0
- data/lib/pione/package/package-reader.rb +2 -4
- data/lib/pione/package/package-scanner.rb +23 -3
- data/lib/pione/rule-engine.rb +48 -19
- data/lib/pione/rule-engine/action-handler.rb +29 -5
- data/lib/pione/rule-engine/basic-handler.rb +27 -19
- data/lib/pione/test-helper/command-helper.rb +1 -1
- data/lib/pione/tuple-space/tuple-definition.yml +2 -3
- data/lib/pione/tuple-space/tuple-space-server.rb +8 -0
- data/lib/pione/util/cgi.rb +326 -0
- data/lib/pione/version.rb +1 -1
- data/lib/rootage/normalizer.rb +4 -0
- data/lib/rootage/option.rb +11 -4
- data/test/agent/spec_logger.rb +0 -1
- data/test/agent/spec_messenger.rb +1 -1
- data/test/command/spec_pione-client.rb +4 -4
- data/test/log/spec_message-log.rb +1 -1
- data/test/rule-engine/spec_action-handler.rb +25 -5
- data/test/rule-engine/spec_empty-handler.rb +36 -3
- data/test/rule-engine/spec_flow-handler.rb +90 -7
- metadata +22 -72
- data/misc/test-drb-stop-service.rb +0 -34
- data/misc/test-many-waiters-client.rb +0 -56
- data/misc/test-many-waiters-server.rb +0 -14
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZDZkOWNhZjVhNzZhZTE3MjU2MDM5OWFiYzM1NTUxMDEzMGQ0Y2FmNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OWZiYTQ3YzA3YjNjNDQ5NTI3Y2ZhNTczYWMzN2FkNGM2MDdiN2Y5MA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTZiMmE3ZmRlMmNhZjE3MjhkOGQ5YzFhNGY4Njg0NGQwNDBiYzZlMTE2M2Vi
|
10
|
+
YmU0NjVjMzUxYmYzYzgxZjQ2NDZkMmM1NWVjNWZlNDEzODZlNGUxNmFkYzM1
|
11
|
+
YjY5ZDliYmFhMWI2ZWRkZjQ3YjM1ZGUxNTc3YmY2MWEyZTNjYTY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YjAwNjIxZWJlNDY2ZWZjODVlMDEzYWQyNmVmN2ZiZWFlMzgwOGQ1ZDAzZDk5
|
14
|
+
MzY3YTNlNzc1YjU0MTA2OWFlMjE0YWY1Y2RlYjY4MWRmYjI0ODM5MzNjYzQ1
|
15
|
+
MTMwZGUyYjNlN2EzZmUxNWFlM2ZhMmQ5NTA1ZjlkODY2MmE2MWE=
|
data/.gitignore
CHANGED
data/History.txt
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# History
|
2
2
|
|
3
|
+
## 0.4.1(2014/8/11)
|
4
|
+
|
5
|
+
* Work with new PIONE webclient.
|
6
|
+
* Improved interactive operations(file API and CGI).
|
7
|
+
* Changed layouts of base directory. Output files exist in directory `output`.
|
8
|
+
* Changed base directory option as `--base LOCATION`.
|
9
|
+
|
3
10
|
## 0.4.0(2014/4/17)
|
4
11
|
|
5
12
|
* Added new PNML compiler(`pione compile`).
|
@@ -13,14 +13,21 @@ End
|
|
13
13
|
|
14
14
|
Rule UserSelect
|
15
15
|
output 'a.txt' or 'b.txt' or 'c.txt'
|
16
|
-
feature +Interactive
|
17
16
|
Action
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
case "$PIONE_CLIENT_UI" in
|
18
|
+
"Browser")
|
19
|
+
pione-interactive --ui Browser --type dialog --definition bin/ui.xml -o rule.txt ;;
|
20
|
+
"GUI")
|
21
|
+
if [ "{$DIALOG}" = "zenity" ]
|
22
|
+
then
|
23
|
+
zenity --list --title "select action" --column rule "rule A" "rule B" "rule C" > rule.txt
|
24
|
+
else
|
25
|
+
xmessage -print -center -buttons "rule A,rule B,rule C" "select action" > rule.txt
|
26
|
+
fi ;;
|
27
|
+
*)
|
28
|
+
echo "rule A" > rule.txt
|
29
|
+
esac
|
30
|
+
|
24
31
|
RULE=`cat rule.txt`
|
25
32
|
case "$RULE" in
|
26
33
|
"rule A") touch a.txt ;;
|
@@ -1,8 +1,9 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8" ?>
|
2
2
|
<pione:interactive type="Browser" xmlns:pione="https://github.com/pione/pione">
|
3
3
|
<pione:content type="text/html">
|
4
|
-
<button id="
|
5
|
-
<button id="
|
4
|
+
<button id="RuleA">rule A</button>
|
5
|
+
<button id="RuleB">rule B</button>
|
6
|
+
<button id="RuleC">rule C</button>
|
6
7
|
</pione:content>
|
7
8
|
<pione:script type="text/javascript">
|
8
9
|
var sendEvent = function (res) {
|
@@ -12,12 +13,16 @@
|
|
12
13
|
document.dispatchEvent(event);
|
13
14
|
};
|
14
15
|
|
15
|
-
document.getElementById("
|
16
|
-
sendEvent("
|
16
|
+
document.getElementById("RuleA").addEventListener("click", function () {
|
17
|
+
sendEvent("rule A");
|
17
18
|
});
|
18
19
|
|
19
|
-
document.getElementById("
|
20
|
-
sendEvent("
|
20
|
+
document.getElementById("RuleB").addEventListener("click", function () {
|
21
|
+
sendEvent("rule B");
|
22
|
+
});
|
23
|
+
|
24
|
+
document.getElementById("RuleC").addEventListener("click", function () {
|
25
|
+
sendEvent("rule C");
|
21
26
|
});
|
22
27
|
</pione:script>
|
23
28
|
</pione:interactive>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
.@ PackageName :: "DefferredChoiceWithPage"
|
2
|
+
|
3
|
+
Rule Main
|
4
|
+
output 'result.txt'
|
5
|
+
Flow
|
6
|
+
rule UserSelect
|
7
|
+
rule A
|
8
|
+
rule B
|
9
|
+
rule C
|
10
|
+
End
|
11
|
+
|
12
|
+
Rule UserSelect
|
13
|
+
output 'a.txt' or 'b.txt' or 'c.txt'
|
14
|
+
Action
|
15
|
+
# start interactive operation
|
16
|
+
pione-interactive browser -o rule.txt --public ./etc
|
17
|
+
|
18
|
+
# generate an output
|
19
|
+
RULE=`cat rule.txt`
|
20
|
+
case "$RULE" in
|
21
|
+
"rule A") touch a.txt ;;
|
22
|
+
"rule B") touch b.txt ;;
|
23
|
+
"rule C") touch c.txt ;;
|
24
|
+
esac
|
25
|
+
End
|
26
|
+
|
27
|
+
Rule A
|
28
|
+
input 'a.txt'
|
29
|
+
output 'result.txt'
|
30
|
+
Action
|
31
|
+
echo 'You selected rule A' > {$O[1]}
|
32
|
+
End
|
33
|
+
|
34
|
+
Rule B
|
35
|
+
input 'b.txt'
|
36
|
+
output 'result.txt'
|
37
|
+
Action
|
38
|
+
echo 'You selected rule B' > {$O[1]}
|
39
|
+
End
|
40
|
+
|
41
|
+
Rule C
|
42
|
+
input 'c.txt'
|
43
|
+
output 'result.txt'
|
44
|
+
Action
|
45
|
+
echo 'You selected rule C' > {$O[1]}
|
46
|
+
End
|
47
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Deferred Choice with Page</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1>Deferred Choice</h1>
|
9
|
+
<h2>Select a rule you want to fire</h2>
|
10
|
+
<form method="POST">
|
11
|
+
<div>
|
12
|
+
<input type="radio" name="pione-result" value="rule A" /> Rule A
|
13
|
+
<input type="radio" name="pione-result" value="rule B" /> Rule B
|
14
|
+
<input type="radio" name="pione-result" value="rule C" /> Rule C
|
15
|
+
</div>
|
16
|
+
<div>
|
17
|
+
<input type="hidden" name="pione-action" value="finish" />
|
18
|
+
<button type="submit">send</button>
|
19
|
+
</div>
|
20
|
+
</form>
|
21
|
+
</body>
|
22
|
+
</html>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.@ PackageName :: "Interaction"
|
2
|
+
|
3
|
+
Rule Main
|
4
|
+
output 'output*.txt'.all
|
5
|
+
Flow
|
6
|
+
rule Interaction
|
7
|
+
End
|
8
|
+
|
9
|
+
Rule Interaction
|
10
|
+
output 'output*.txt'.all
|
11
|
+
Action
|
12
|
+
# build public directory for pione-interactive
|
13
|
+
mkdir public
|
14
|
+
cp bin/* public
|
15
|
+
cp etc/* public
|
16
|
+
cp etc/.hidden-file.txt public
|
17
|
+
|
18
|
+
# set environment variables for CGI
|
19
|
+
export ENV_EXAMPLE1=a
|
20
|
+
export ENV_EXAMPLE2=b
|
21
|
+
export ENV_EXAMPLE3=c
|
22
|
+
|
23
|
+
# start interactive operation
|
24
|
+
pione-interactive browser --public public
|
25
|
+
|
26
|
+
cp public/* .
|
27
|
+
End
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'cgi'
|
4
|
+
require 'erb'
|
5
|
+
|
6
|
+
cgi = CGI.new
|
7
|
+
|
8
|
+
TEMPLATE = <<-HTML
|
9
|
+
<!DOCTYPE html>
|
10
|
+
<html>
|
11
|
+
<header>
|
12
|
+
<title>CGI Execution</title>
|
13
|
+
</header>
|
14
|
+
<body>
|
15
|
+
<h1>CGI Execution</h1>
|
16
|
+
|
17
|
+
<section>
|
18
|
+
<h2>Arguments</h2>
|
19
|
+
<ol>
|
20
|
+
<% ARGV.each do |val| %>
|
21
|
+
<li><%= CGI.escapeHTML(val) %></li>
|
22
|
+
<% end %>
|
23
|
+
</ol>
|
24
|
+
</section>
|
25
|
+
|
26
|
+
<section>
|
27
|
+
<h2>Parameters</h2>
|
28
|
+
<div><%= CGI.escapeHTML(cgi.params.to_s) %></div>
|
29
|
+
</section>
|
30
|
+
|
31
|
+
<section>
|
32
|
+
<h2>ENV</h2>
|
33
|
+
<dl>
|
34
|
+
<% ENV.keys.sort.each do |key| %>
|
35
|
+
<dt><%= CGI.escapeHTML(key) %></dt><dd><%= CGI.escapeHTML(ENV[key]) %></dd>
|
36
|
+
<% end %>
|
37
|
+
</dl>
|
38
|
+
</section>
|
39
|
+
</body>
|
40
|
+
</html>
|
41
|
+
HTML
|
42
|
+
|
43
|
+
cgi.out(type: "text/html") do
|
44
|
+
ERB.new(TEMPLATE).result
|
45
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a hidden file, so list operation doesn't show this file with "pione-show-all=false".
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>CGI Execution Examples</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<h1>CGI Execution Examples</h1>
|
8
|
+
<section>
|
9
|
+
<h2>Call CGI Script with No Parameters</h2>
|
10
|
+
<a href="show-environment.cgi">show-environment.cgi</a>
|
11
|
+
</section>
|
12
|
+
|
13
|
+
<section>
|
14
|
+
<h2>Call CGI Script with Arguments</h2>
|
15
|
+
<a href="show-environment.cgi?a+b+c">show-environment.cgi?a+b+c</a>
|
16
|
+
</section>
|
17
|
+
|
18
|
+
<section>
|
19
|
+
<h2>Call CGI Script with application/x-www-form-urlencoded</h2>
|
20
|
+
<a href="show-environment.cgi?a=1&b=2&c=3">show-environment.cgi?a=1&b=2&c=3</a>
|
21
|
+
</section>
|
22
|
+
|
23
|
+
<section>
|
24
|
+
<h2>Call CGI Script by POST</h2>
|
25
|
+
<form action="show-environment.cgi">
|
26
|
+
<input type="hidden" name="pione-action" value="get"/>
|
27
|
+
<input type="hidden" name="a" value="1"/>
|
28
|
+
<input type="hidden" name="b" value="2"/>
|
29
|
+
<input type="hidden" name="c" value="3"/>
|
30
|
+
<button type="submit">Call by POST</button>
|
31
|
+
</form>
|
32
|
+
</section>
|
33
|
+
|
34
|
+
<section>
|
35
|
+
<h2>Call CGI Script with multipart/form-data</h2>
|
36
|
+
<form action="show-environment.cgi" method="POST" enctype="multipart/form-data">
|
37
|
+
<input type="hidden" name="pione-action" value="get"/>
|
38
|
+
<input type="hidden" name="a" value="1"/>
|
39
|
+
<input type="hidden" name="b" value="2"/>
|
40
|
+
<input type="hidden" name="c" value="3"/>
|
41
|
+
<input type="file" name="testfile"/>
|
42
|
+
<button type="submit">Call by POST</button>
|
43
|
+
</form>
|
44
|
+
</section>
|
45
|
+
</body>
|
46
|
+
</html>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Interaction Example: Create files</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1>POST Method Examples</h1>
|
9
|
+
|
10
|
+
<section>
|
11
|
+
<h2>Create by input text</h2>
|
12
|
+
<form action="output1.txt" method="POST">
|
13
|
+
<input type="hidden" name="pione-action" value="create" />
|
14
|
+
<input type="text" name="pione-content" />
|
15
|
+
<button type="submit">Create output1.txt</button>
|
16
|
+
</form>
|
17
|
+
</section>
|
18
|
+
|
19
|
+
<section>
|
20
|
+
<h2>Create by select box</h2>
|
21
|
+
<form action="output2.txt" method="POST">
|
22
|
+
<input type="hidden" name="pione-action" value="create" />
|
23
|
+
<select name="pione-content">
|
24
|
+
<option value="A">A</option>
|
25
|
+
<option value="B">B</option>
|
26
|
+
<option value="C">C</option>
|
27
|
+
</select>
|
28
|
+
<button type="submit">Create output2.txt</button>
|
29
|
+
</form>
|
30
|
+
</section>
|
31
|
+
|
32
|
+
<section>
|
33
|
+
<h2>Create by radio button</h2>
|
34
|
+
<form action="output3.txt" method="POST">
|
35
|
+
<input type="hidden" name="pione-action" value="create" />
|
36
|
+
<input type="radio" name="pione-content" value="1" checked="checked" />1
|
37
|
+
<input type="radio" name="pione-content" value="2" />2
|
38
|
+
<input type="radio" name="pione-content" value="3" />3
|
39
|
+
<button type="submit">Create output3.txt</button>
|
40
|
+
</form>
|
41
|
+
</section>
|
42
|
+
|
43
|
+
<section>
|
44
|
+
<h2>Create with multipart/form-data</h2>
|
45
|
+
<form action="output4" method="POST" enctype="multipart/form-data">
|
46
|
+
<input type="hidden" name="pione-action" value="create"/>
|
47
|
+
<input type="file" name="pione-content"/>
|
48
|
+
<button type="submit">Call by POST</button>
|
49
|
+
</form>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Interaction Example: Delete files</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1>POST Method Example</h1>
|
9
|
+
|
10
|
+
<section>
|
11
|
+
<form action="output1.txt" method="POST">
|
12
|
+
<input type="hidden" name="pione-action" value="delete" />
|
13
|
+
<button type="submit">Delete output1.txt</button>
|
14
|
+
</form>
|
15
|
+
</section>
|
16
|
+
|
17
|
+
<section>
|
18
|
+
<form action="output2.txt" method="POST">
|
19
|
+
<input type="hidden" name="pione-action" value="delete" />
|
20
|
+
<button type="submit">Delete output2.txt</button>
|
21
|
+
</form>
|
22
|
+
</section>
|
23
|
+
|
24
|
+
<section>
|
25
|
+
<form action="output3.txt" method="POST">
|
26
|
+
<input type="hidden" name="pione-action" value="delete" />
|
27
|
+
<button type="submit">Delete output3.txt</button>
|
28
|
+
</form>
|
29
|
+
</section>
|
30
|
+
</body>
|
31
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Interaction Example: Get files</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h2>Simple Link Examples</h2>
|
9
|
+
<ul>
|
10
|
+
<li><a href="get-files.html">get-files.html</a></li>
|
11
|
+
<li><a href="create-files.html">create-files.html</a></li>
|
12
|
+
<li><a href="delete-files.html">delete-files.html</a></li>
|
13
|
+
<li><a href="list-files.html">list-files.html</a></li>
|
14
|
+
</ul>
|
15
|
+
<h2>GET Method Example</h2>
|
16
|
+
<form action="get-files.html" method="GET">
|
17
|
+
<input type="hidden" name="pione-action" value="get" />
|
18
|
+
<button type="submit">get get-files.html by GET method</button>
|
19
|
+
</form>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Interaction Example</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<h1>Examples</h1>
|
9
|
+
<ul>
|
10
|
+
<li><a href="get-files.html">get files from working directory</a></li>
|
11
|
+
<li><a href="create-files.html">create files in working directory</a></li>
|
12
|
+
<li><a href="delete-files.html">delete files from working directory</a></li>
|
13
|
+
<li><a href="list-files.html">list files in working directory</a></li>
|
14
|
+
<li><a href="cgi.html">CGI execution examples</a></li>
|
15
|
+
</ul>
|
16
|
+
<a href="?pione-action=finish">Close this interaction</a>
|
17
|
+
</body>
|
18
|
+
</html>
|