pione 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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>
|