pione 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -3
- data/.simplecov +7 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/History.txt +13 -0
- data/README.md +2 -0
- data/Rakefile +16 -6
- data/bin/pione-val +5 -0
- data/example/AbstractRule/package.yml +1 -0
- data/example/HelloWorld/package.yml +2 -0
- data/example/HelloWorld/scenario/scenario.yml +2 -0
- data/example/LoopByTouch/LoopByTouch.pione +28 -0
- data/example/LoopByTouch/package.yml +1 -0
- data/example/MakePair/package.yml +2 -0
- data/example/MakePair/{data → scenario/input}/1.i +0 -0
- data/example/MakePair/{data → scenario/input}/2.i +0 -0
- data/example/MakePair/{data → scenario/input}/3.i +0 -0
- data/example/MakePair/{data → scenario/input}/4.i +0 -0
- data/example/MakePair/{data → scenario/input}/5.i +0 -0
- data/example/MakePair/scenario/scenario.yml +1 -0
- data/example/ScoreAggregation/ScoreAggregation.pione +122 -0
- data/example/ScoreAggregation/bin/apply-template.rb +10 -0
- data/example/ScoreAggregation/bin/histgram-graph.sh +18 -0
- data/example/ScoreAggregation/bin/mean-summary.rb +10 -0
- data/example/ScoreAggregation/bin/personal-bar-graph.sh +18 -0
- data/example/ScoreAggregation/bin/personal-pre-statistics.rb +37 -0
- data/example/ScoreAggregation/bin/total-mean.rb +10 -0
- data/example/ScoreAggregation/bin/total-statistics.rb +43 -0
- data/example/ScoreAggregation/generate-data.rb +63 -0
- data/example/ScoreAggregation/package.yml +1 -0
- data/example/ScoreAggregation/scenario/case1/input/A.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/B.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/C.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/D.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/E.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/F.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/G.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/H.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/I.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/J.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/K.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/L.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/M.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/N.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/O.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/P.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Q.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/R.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/S.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/T.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/U.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/V.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/W.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/X.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Y.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Z.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/stat-template.erb +24 -0
- data/example/ScoreAggregation/scenario/case1/scenario.yml +3 -0
- data/example/{SequentialProcess/SequentialProcess.pione → SerialProcessing/SerialProcessing.pione} +0 -0
- data/example/SerialProcessing/package.yml +1 -0
- data/example/WorkflowPatterns/01_Sequence/Sequence.pione +21 -0
- data/example/WorkflowPatterns/02_PrallelSplit/ParallelSplit.pione +29 -0
- data/example/WorkflowPatterns/03_Synchronization/Synchronization.pione +30 -0
- data/example/WorkflowPatterns/04_ExclusiveChoice/ExclusiveChoice.pione +44 -0
- data/example/WorkflowPatterns/05_SimpleMerge/SimpleMerge.pione +44 -0
- data/example/WorkflowPatterns/06_MultiChoice/MultiChoice.pione +48 -0
- data/example/WorkflowPatterns/07_StructuredSynchronizingMerge/StructuredSynchronizingMerge.pione +71 -0
- data/example/WorkflowPatterns/08_MultiMerge/MultiMerge.pione +44 -0
- data/example/WorkflowPatterns/11_ImplicitTermination/ImplicitTermination.pione +29 -0
- data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/MultipleInstancesWithoutSynchronization.pione +29 -0
- data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/MultipleInstancesWithDesignTimeKnowledge.pione +28 -0
- data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/MultipleInstancesWithRunTimeKnowledge.pione +33 -0
- data/example/WorkflowPatterns/33_GeneralizedANDJoin/GeneralizedANDJoin.pione +21 -0
- data/example/WorkflowPatterns/37_LocalSynchronizingMerge/LocalSynchronizingMerge.pione +101 -0
- data/example/WorkflowPatterns/41_ThreadMerge/ThreadMerge.pione +43 -0
- data/example/WorkflowPatterns/42_ThreadSplit/ThreadSplit.pione +16 -0
- data/lib/pione.rb +23 -47
- data/lib/pione/agent/broker.rb +1 -1
- data/lib/pione/agent/input-generator.rb +1 -1
- data/lib/pione/agent/logger.rb +62 -49
- data/lib/pione/agent/messenger.rb +38 -0
- data/lib/pione/agent/rule-provider.rb +3 -3
- data/lib/pione/agent/task-worker.rb +14 -2
- data/lib/pione/agent/tuple-space-client.rb +1 -1
- data/lib/pione/agent/tuple-space-server-client-life-checker.rb +5 -3
- data/lib/pione/command.rb +2 -0
- data/lib/pione/command/basic-command.rb +1 -1
- data/lib/pione/command/pione-client.rb +57 -16
- data/lib/pione/command/pione-log.rb +5 -5
- data/lib/pione/command/pione-syntax-checker.rb +22 -7
- data/lib/pione/command/pione-task-worker.rb +36 -19
- data/lib/pione/command/pione-tuple-space-viewer.rb +3 -3
- data/lib/pione/command/pione-val.rb +40 -0
- data/lib/pione/component.rb +8 -0
- data/lib/pione/{system → component}/document.rb +13 -11
- data/lib/pione/component/package.rb +269 -0
- data/lib/pione/component/rule.rb +206 -0
- data/lib/pione/location/basic-location.rb +49 -7
- data/lib/pione/location/ftp-location.rb +19 -6
- data/lib/pione/location/local-location.rb +15 -6
- data/lib/pione/log.rb +4 -1
- data/lib/pione/log/{domain-info.rb → domain-log.rb} +23 -11
- data/lib/pione/{util/console-message.rb → log/message-log.rb} +16 -15
- data/lib/pione/log/process-log.rb +35 -86
- data/lib/pione/log/process-record.rb +24 -11
- data/lib/pione/log/system-log.rb +107 -0
- data/lib/pione/log/xes-log.rb +54 -48
- data/lib/pione/model.rb +1 -3
- data/lib/pione/model/assignment.rb +1 -0
- data/lib/pione/model/basic-model.rb +31 -15
- data/lib/pione/model/block.rb +1 -1
- data/lib/pione/model/boolean.rb +10 -23
- data/lib/pione/model/constraints.rb +12 -0
- data/lib/pione/model/data-expr.rb +31 -36
- data/lib/pione/model/feature-expr.rb +6 -23
- data/lib/pione/model/float.rb +29 -18
- data/lib/pione/model/integer.rb +44 -56
- data/lib/pione/model/keyed-sequence.rb +11 -4
- data/lib/pione/model/message.rb +4 -4
- data/lib/pione/model/ordinal-sequence.rb +12 -14
- data/lib/pione/model/package-expr.rb +53 -0
- data/lib/pione/model/parameters.rb +12 -11
- data/lib/pione/model/pione-method.rb +2 -2
- data/lib/pione/model/rule-expr.rb +30 -52
- data/lib/pione/model/sequence.rb +26 -26
- data/lib/pione/model/string.rb +13 -54
- data/lib/pione/model/ticket-expr.rb +12 -53
- data/lib/pione/model/type.rb +7 -1
- data/lib/pione/model/variable-table.rb +5 -4
- data/lib/pione/model/variable.rb +0 -5
- data/lib/pione/option/common-option.rb +2 -1
- data/lib/pione/option/task-worker-owner-option.rb +1 -1
- data/lib/pione/patch/drb-patch.rb +1 -1
- data/lib/pione/patch/em-ftpd-patch.rb +7 -0
- data/lib/pione/patch/rinda-patch.rb +53 -0
- data/lib/pione/patch/uri-patch.rb +5 -0
- data/lib/pione/relay/relay-socket.rb +2 -2
- data/lib/pione/rule-handler/action-handler.rb +71 -64
- data/lib/pione/rule-handler/basic-handler.rb +50 -32
- data/lib/pione/rule-handler/flow-handler.rb +51 -34
- data/lib/pione/rule-handler/update-criteria.rb +43 -20
- data/lib/pione/system.rb +13 -0
- data/lib/pione/system/domain-info.rb +34 -0
- data/lib/pione/system/global.rb +8 -1
- data/lib/pione/system/object.rb +1 -1
- data/lib/pione/transformer/expr-transformer.rb +3 -3
- data/lib/pione/transformer/literal-transformer.rb +3 -3
- data/lib/pione/transformer/rule-definition-transformer.rb +11 -9
- data/lib/pione/tuple-space/tuple-space-server-interface.rb +19 -1
- data/lib/pione/tuple-space/tuple-space-server.rb +9 -2
- data/lib/pione/tuple.rb +30 -0
- data/lib/pione/tuple/data-null-tuple.rb +14 -0
- data/lib/pione/tuple/message-tuple.rb +7 -0
- data/lib/pione/tuple/process-log-tuple.rb +13 -0
- data/lib/pione/tuple/touch-tuple.rb +14 -0
- data/lib/pione/uri-scheme/myftp-scheme.rb +45 -0
- data/lib/pione/util.rb +18 -0
- data/lib/pione/util/cpu.rb +20 -0
- data/lib/pione/util/error-report.rb +9 -1
- data/lib/pione/util/evaluatable.rb +47 -0
- data/lib/pione/util/ftp-server.rb +468 -0
- data/lib/pione/util/id.rb +39 -0
- data/lib/pione/util/indentation.rb +19 -0
- data/lib/pione/util/ip-address.rb +35 -0
- data/lib/pione/util/misc.rb +0 -47
- data/lib/pione/util/uuid.rb +28 -0
- data/lib/pione/util/variable-holdable.rb +38 -0
- data/lib/pione/version.rb +1 -1
- data/pione.gemspec +16 -14
- data/test/agent/spec_logger.rb +35 -44
- data/test/agent/spec_messenger.rb +25 -0
- data/test/agent/spec_rule-provider.rb +1 -1
- data/test/agent/spec_task-worker.rb +7 -13
- data/test/{system → component}/spec_document.rb +20 -20
- data/test/component/spec_package.rb +77 -0
- data/test/component/spec_package/TestPackage/Test.pione +14 -0
- data/test/component/spec_package/TestPackage/bin/count +3 -0
- data/test/component/spec_package/TestPackage/package.yml +7 -0
- data/test/component/spec_package/TestPackage/scenario/case1/input/1.txt +1 -0
- data/test/component/spec_package/TestPackage/scenario/case1/scenario.yml +1 -0
- data/test/component/spec_rule.rb +140 -0
- data/test/endurance-test/graph.plt +12 -0
- data/test/endurance-test/run.sh +65 -0
- data/test/location/location-behavior.rb +125 -0
- data/test/location/spec_ftp-location.rb +28 -90
- data/test/location/spec_local-location.rb +26 -76
- data/test/log/raw-process-log/pione-process.log +710 -0
- data/test/log/spec_domain-log.rb +57 -0
- data/test/log/spec_message-log.rb +44 -0
- data/test/log/spec_process-log.rb +88 -0
- data/test/log/spec_process-record.rb +148 -0
- data/test/log/spec_system-log.rb +142 -0
- data/test/log/spec_xes-log.rb +2 -2
- data/test/model/spec_assignment.rb +26 -25
- data/test/model/spec_block.rb +51 -97
- data/test/model/spec_boolean.rb +0 -5
- data/test/model/spec_call-rule.rb +6 -6
- data/test/model/spec_data-expr.rb +0 -7
- data/test/model/spec_data-expr.yml +8 -0
- data/test/model/spec_float.rb +1 -1
- data/test/model/spec_float.yml +13 -0
- data/test/model/spec_integer.rb +1 -1
- data/test/model/spec_integer.yml +12 -1
- data/test/model/spec_keyed-sequence.yml +5 -0
- data/test/model/spec_message.rb +2 -4
- data/test/model/spec_package-expr.rb +19 -0
- data/test/model/spec_parameters.rb +56 -88
- data/test/model/spec_pione-method.rb +15 -14
- data/test/model/spec_rule-expr.rb +4 -52
- data/test/model/spec_rule-expr.yml +11 -0
- data/test/model/spec_sequence.yml +6 -0
- data/test/model/spec_string.rb +21 -13
- data/test/model/spec_string.yml +10 -2
- data/test/model/spec_ticket-expr.rb +25 -3
- data/test/model/spec_variable.rb +8 -8
- data/test/rule-handler/spec_action-handler.pione +37 -0
- data/test/rule-handler/spec_action-handler.rb +41 -97
- data/test/rule-handler/spec_flow-handler.rb +24 -30
- data/test/rule-handler/spec_update-criteria.pione +16 -0
- data/test/rule-handler/spec_update-criteria.rb +7 -4
- data/test/rule-handler/spec_update-criteria.yml +191 -0
- data/test/system/spec_domain-info.rb +25 -0
- data/test/test-util.rb +38 -228
- data/test/transformer/spec_block-transformer.rb +1 -1
- data/test/transformer/spec_expr-transformer.rb +30 -39
- data/test/transformer/spec_flow-element-transformer.rb +17 -17
- data/test/transformer/spec_literal-transformer.rb +3 -3
- data/test/transformer/spec_rule-definition-transformer.rb +55 -76
- data/test/{spec_data-finder.rb → tuple-space/spec_data-finder.rb} +1 -1
- data/test/{spec_data-finder.yml → tuple-space/spec_data-finder.yml} +0 -0
- data/test/tuple/spec_data-tuple.rb +5 -76
- data/test/tuple/spec_finished-tuple.rb +5 -46
- data/test/tuple/spec_message-tuple.rb +10 -0
- data/test/tuple/spec_task-tuple.rb +4 -110
- data/test/tuple/spec_touch-tuple.rb +14 -0
- data/test/tuple/tuple-behavior.rb +14 -0
- data/test/uri-scheme/spec_local-scheme.rb +1 -1
- data/test/uri-scheme/spec_myftp-scheme.rb +73 -0
- data/test/uri-scheme/spec_myftp-scheme.yml +85 -0
- data/test/util/spec_cpu.rb +8 -0
- data/test/util/spec_error-report.rb +42 -0
- data/test/util/spec_evaluatable.rb +18 -0
- data/test/util/spec_ftp-server.rb +249 -0
- data/test/util/spec_id.pione +14 -0
- data/test/util/spec_id.rb +77 -0
- data/test/util/spec_indentation.rb +77 -0
- data/test/util/spec_ip-address.rb +15 -0
- data/test/util/spec_uuid.rb +11 -0
- data/test/util/spec_variable-holdable.rb +69 -0
- metadata +282 -83
- data/bin/pione-eval +0 -111
- data/demo/demo.rb +0 -311
- data/demo/public/base.css +0 -94
- data/demo/public/demo.js +0 -107
- data/demo/public/index.html +0 -91
- data/demo/public/jquery-1.8.3.min.js +0 -2
- data/lib/pione/model/binary-operator.rb +0 -90
- data/lib/pione/model/list.rb +0 -108
- data/lib/pione/model/package.rb +0 -56
- data/lib/pione/model/rule-io.rb +0 -178
- data/lib/pione/model/rule.rb +0 -295
- data/lib/pione/system/identifier.rb +0 -61
- data/lib/pione/tuple/log-tuple.rb +0 -14
- data/lib/pione/util/terminal.rb +0 -78
- data/test/log/data/sample.log +0 -1003
- data/test/model/spec_binary-operator.rb +0 -39
- data/test/model/spec_package.rb +0 -15
- data/test/model/spec_rule.rb +0 -158
- data/test/spec_identifier.rb +0 -29
- data/test/spec_log.rb +0 -52
@@ -0,0 +1,29 @@
|
|
1
|
+
Rule Main
|
2
|
+
output 'o1-*'.all
|
3
|
+
output 'o2'
|
4
|
+
Flow
|
5
|
+
rule Init
|
6
|
+
rule A
|
7
|
+
rule B
|
8
|
+
rule C
|
9
|
+
End
|
10
|
+
|
11
|
+
Rule Init
|
12
|
+
output 'i1'.touch
|
13
|
+
End
|
14
|
+
|
15
|
+
Rule A
|
16
|
+
input 'i1'
|
17
|
+
output 'p1'.touch
|
18
|
+
End
|
19
|
+
|
20
|
+
Rule B
|
21
|
+
input 'p1'
|
22
|
+
output 'o2'.touch
|
23
|
+
End
|
24
|
+
|
25
|
+
Rule C
|
26
|
+
input 'p1'
|
27
|
+
output 'o1-{$N}'.touch
|
28
|
+
param $N := 1.upto(5)
|
29
|
+
End
|
@@ -0,0 +1,28 @@
|
|
1
|
+
Rule Main
|
2
|
+
output 'o1'
|
3
|
+
Flow
|
4
|
+
rule Init
|
5
|
+
rule A
|
6
|
+
rule B
|
7
|
+
rule C
|
8
|
+
End
|
9
|
+
|
10
|
+
Rule Init
|
11
|
+
output 'i1'.touch
|
12
|
+
End
|
13
|
+
|
14
|
+
Rule A
|
15
|
+
input 'i1'
|
16
|
+
output 'p1'.touch
|
17
|
+
End
|
18
|
+
|
19
|
+
Rule B
|
20
|
+
input 'p1'
|
21
|
+
output 'p2-{$N}'.touch
|
22
|
+
param $N := 1.upto(5)
|
23
|
+
End
|
24
|
+
|
25
|
+
Rule C
|
26
|
+
input 'p2-*'.all
|
27
|
+
output 'o1'.touch
|
28
|
+
End
|
@@ -0,0 +1,33 @@
|
|
1
|
+
param $NUM := 5
|
2
|
+
|
3
|
+
Rule Main
|
4
|
+
output 'o1'
|
5
|
+
Flow
|
6
|
+
rule Init
|
7
|
+
rule A
|
8
|
+
rule B
|
9
|
+
rule C
|
10
|
+
End
|
11
|
+
|
12
|
+
Rule Init
|
13
|
+
output 'i1'.touch
|
14
|
+
End
|
15
|
+
|
16
|
+
Rule A
|
17
|
+
input 'i1'
|
18
|
+
output 'p1'.touch
|
19
|
+
output 'p3'.touch
|
20
|
+
End
|
21
|
+
|
22
|
+
Rule B
|
23
|
+
input 'p2-*'.all
|
24
|
+
input 'p3'
|
25
|
+
output 'o1'.touch
|
26
|
+
End
|
27
|
+
|
28
|
+
Rule C
|
29
|
+
input 'p1'
|
30
|
+
output 'p2-{$N}'.touch
|
31
|
+
param $N := 1.upto($NUM)
|
32
|
+
End
|
33
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Rule Main
|
2
|
+
output '*.o1'.all
|
3
|
+
Flow
|
4
|
+
rule Init
|
5
|
+
rule A
|
6
|
+
End
|
7
|
+
|
8
|
+
Rule Init
|
9
|
+
output '{$N}.i1'.touch
|
10
|
+
output '{$N}.i2'.touch
|
11
|
+
output '{$N}.i3'.touch
|
12
|
+
param $N := (1 | 2 | 3 | 4 | 5)
|
13
|
+
End
|
14
|
+
|
15
|
+
Rule A
|
16
|
+
input '*.i1'
|
17
|
+
input '{$*}.i2'
|
18
|
+
input '{$*}.i3'
|
19
|
+
output '{$*}.o1'.touch
|
20
|
+
End
|
21
|
+
|
@@ -0,0 +1,101 @@
|
|
1
|
+
param $ST1 := true
|
2
|
+
$ST2 := not :: $ST1
|
3
|
+
|
4
|
+
Rule Main
|
5
|
+
output 'o1'
|
6
|
+
Flow
|
7
|
+
rule Init
|
8
|
+
rule A
|
9
|
+
rule B
|
10
|
+
rule C
|
11
|
+
rule D
|
12
|
+
rule E
|
13
|
+
rule S1
|
14
|
+
rule S2
|
15
|
+
rule S3
|
16
|
+
End
|
17
|
+
|
18
|
+
Rule Init
|
19
|
+
output 'i1'.touch
|
20
|
+
End
|
21
|
+
|
22
|
+
Rule A
|
23
|
+
input 'i1'
|
24
|
+
output 'p1-c'
|
25
|
+
output 'p1-true' or 'p1-false'
|
26
|
+
output 'p2-c'
|
27
|
+
output 'p2-true' or 'p2-false'
|
28
|
+
Flow
|
29
|
+
rule A1
|
30
|
+
rule A2
|
31
|
+
rule A3
|
32
|
+
rule A4
|
33
|
+
End
|
34
|
+
|
35
|
+
Rule A1
|
36
|
+
output 'p1-c'.touch
|
37
|
+
output 'p1-true'.touch
|
38
|
+
constraint $ST1
|
39
|
+
End
|
40
|
+
|
41
|
+
Rule A2
|
42
|
+
output 'p1-c'.touch
|
43
|
+
output 'p1-false'.touch
|
44
|
+
constraint not :: $ST1
|
45
|
+
End
|
46
|
+
|
47
|
+
Rule A3
|
48
|
+
output 'p2-c'.touch
|
49
|
+
output 'p2-true'.touch
|
50
|
+
constraint $ST2
|
51
|
+
End
|
52
|
+
|
53
|
+
Rule A4
|
54
|
+
output 'p2-c'.touch
|
55
|
+
output 'p2-false'.touch
|
56
|
+
constraint not :: $ST2
|
57
|
+
End
|
58
|
+
|
59
|
+
Rule B
|
60
|
+
input 'p1-c'
|
61
|
+
input 'p1-true'
|
62
|
+
output 'p3-c'.touch
|
63
|
+
output 'p3-true'.touch
|
64
|
+
End
|
65
|
+
|
66
|
+
Rule C
|
67
|
+
input 'p2-c'
|
68
|
+
input 'p2-true'
|
69
|
+
output 'p5'.touch
|
70
|
+
End
|
71
|
+
|
72
|
+
Rule D
|
73
|
+
input 'p3-c'
|
74
|
+
input 'p3-true'
|
75
|
+
output 'p4'.touch
|
76
|
+
End
|
77
|
+
|
78
|
+
Rule E
|
79
|
+
input 'p4'
|
80
|
+
input 'p5'
|
81
|
+
output 'o1'.touch
|
82
|
+
End
|
83
|
+
|
84
|
+
Rule S1
|
85
|
+
input 'p1-c'
|
86
|
+
input 'p1-false'
|
87
|
+
output 'p3-c'.touch
|
88
|
+
output 'p3-false'.touch
|
89
|
+
End
|
90
|
+
|
91
|
+
Rule S2
|
92
|
+
input 'p3-c'
|
93
|
+
input 'p3-false'
|
94
|
+
output 'p4'.touch
|
95
|
+
End
|
96
|
+
|
97
|
+
Rule S3
|
98
|
+
input 'p2-c'
|
99
|
+
input 'p2-false'
|
100
|
+
output 'p5'.touch
|
101
|
+
End
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Rule Main
|
2
|
+
output 'o1'
|
3
|
+
Flow
|
4
|
+
rule Init
|
5
|
+
rule A
|
6
|
+
End
|
7
|
+
|
8
|
+
Rule Init
|
9
|
+
output 'i1'.touch
|
10
|
+
output 'cont'.touch
|
11
|
+
output '0.count'.touch
|
12
|
+
End
|
13
|
+
|
14
|
+
Rule A
|
15
|
+
input 'i1'
|
16
|
+
input 'cont'
|
17
|
+
input '0.count'
|
18
|
+
output 'o1'
|
19
|
+
Flow
|
20
|
+
rule A1
|
21
|
+
rule A2
|
22
|
+
End
|
23
|
+
|
24
|
+
Rule A1
|
25
|
+
input '*.count'.all or null
|
26
|
+
input 'cont'
|
27
|
+
output '{$*.length}.count'
|
28
|
+
Flow
|
29
|
+
rule A1Count {N: $*.length}
|
30
|
+
End
|
31
|
+
|
32
|
+
Rule A1Count
|
33
|
+
output '{$N}.count'.touch
|
34
|
+
param $N
|
35
|
+
End
|
36
|
+
|
37
|
+
Rule A2
|
38
|
+
input '*.count'.all
|
39
|
+
input 'cont'
|
40
|
+
output 'o1'.touch
|
41
|
+
output 'cont'.remove
|
42
|
+
constraint $*.length > 5
|
43
|
+
End
|
data/lib/pione.rb
CHANGED
@@ -23,6 +23,7 @@ require 'time'
|
|
23
23
|
require 'etc'
|
24
24
|
require 'json'
|
25
25
|
require 'rexml/document'
|
26
|
+
require 'logger'
|
26
27
|
|
27
28
|
require 'uuidtools'
|
28
29
|
require 'parslet'
|
@@ -34,23 +35,21 @@ require 'hamster'
|
|
34
35
|
require 'naming'
|
35
36
|
require 'temppath'
|
36
37
|
require 'xes'
|
38
|
+
require 'sys/uname'
|
39
|
+
require 'simple-identity'
|
40
|
+
require 'rainbow'
|
41
|
+
require 'em-ftpd'
|
42
|
+
require 'pione/patch/em-ftpd-patch'
|
43
|
+
require 'sys/cpu'
|
44
|
+
require 'structx'
|
45
|
+
require 'syslog-logger'
|
37
46
|
|
38
47
|
#
|
39
48
|
# load pione
|
40
49
|
#
|
41
50
|
|
42
|
-
# version
|
43
51
|
require 'pione/version'
|
44
|
-
|
45
|
-
# util
|
46
|
-
require 'pione/util/misc'
|
47
|
-
require 'pione/util/terminal'
|
48
|
-
require 'pione/util/console-message'
|
49
|
-
require 'pione/util/waiter-table'
|
50
|
-
require 'pione/util/error-report'
|
51
|
-
|
52
|
-
# log
|
53
|
-
require 'pione/log'
|
52
|
+
require 'pione/util'
|
54
53
|
|
55
54
|
# patch
|
56
55
|
require 'pione/patch/array-patch'
|
@@ -59,27 +58,19 @@ require 'pione/patch/rinda-patch'
|
|
59
58
|
require 'pione/patch/uri-patch'
|
60
59
|
require 'pione/patch/monitor-patch'
|
61
60
|
|
62
|
-
# system
|
63
|
-
require 'pione/system/object'
|
64
|
-
require 'pione/system/common'
|
65
|
-
require 'pione/system/config'
|
66
|
-
require 'pione/system/global'
|
67
|
-
require 'pione/system/init'
|
68
|
-
require 'pione/system/identifier'
|
69
|
-
require 'pione/system/document'
|
70
|
-
require 'pione/system/file-cache'
|
71
|
-
|
72
|
-
Pione.module_exec {const_set(:PioneObject, Pione::System::PioneObject)}
|
73
|
-
Pione.module_exec {const_set(:Global, Pione::System::Global)}
|
74
|
-
|
75
61
|
# uri-scheme
|
76
62
|
require 'pione/uri-scheme/basic-scheme'
|
77
63
|
require 'pione/uri-scheme/local-scheme'
|
78
64
|
require 'pione/uri-scheme/dropbox-scheme'
|
79
65
|
require 'pione/uri-scheme/broadcast-scheme'
|
66
|
+
require 'pione/uri-scheme/myftp-scheme'
|
80
67
|
|
81
|
-
# location
|
82
68
|
require 'pione/location'
|
69
|
+
require 'pione/log'
|
70
|
+
require 'pione/system'
|
71
|
+
|
72
|
+
Pione.module_exec {const_set(:PioneObject, Pione::System::PioneObject)}
|
73
|
+
Pione.module_exec {const_set(:Global, Pione::System::Global)}
|
83
74
|
|
84
75
|
# relay
|
85
76
|
require 'pione/relay/transmitter-socket'
|
@@ -100,30 +91,11 @@ require 'pione/tuple-space/data-finder'
|
|
100
91
|
# rule-handler
|
101
92
|
require 'pione/rule-handler.rb'
|
102
93
|
|
103
|
-
# model
|
104
94
|
require 'pione/model'
|
95
|
+
require 'pione/component'
|
105
96
|
|
106
97
|
# tuple
|
107
|
-
require 'pione/tuple
|
108
|
-
require 'pione/tuple/agent-tuple'
|
109
|
-
require 'pione/tuple/data-tuple'
|
110
|
-
require 'pione/tuple/finished-tuple'
|
111
|
-
require 'pione/tuple/process-info-tuple'
|
112
|
-
require 'pione/tuple/lift-tuple'
|
113
|
-
require 'pione/tuple/working-tuple'
|
114
|
-
require 'pione/tuple/attribute-tuple'
|
115
|
-
require 'pione/tuple/bye-tuple'
|
116
|
-
require 'pione/tuple/dry-run-tuple'
|
117
|
-
require 'pione/tuple/foreground-tuple'
|
118
|
-
require 'pione/tuple/request-rule-tuple'
|
119
|
-
require 'pione/tuple/task-tuple'
|
120
|
-
require 'pione/tuple/base-location-tuple'
|
121
|
-
require 'pione/tuple/command-tuple'
|
122
|
-
require 'pione/tuple/exception-tuple'
|
123
|
-
require 'pione/tuple/log-tuple'
|
124
|
-
require 'pione/tuple/rule-tuple'
|
125
|
-
require 'pione/tuple/task-worker-resource-tuple'
|
126
|
-
require 'pione/tuple/ticket-tuple'
|
98
|
+
require 'pione/tuple'
|
127
99
|
|
128
100
|
# parser
|
129
101
|
require 'pione/parser/parslet-extension'
|
@@ -151,6 +123,7 @@ require 'pione/agent/broker'
|
|
151
123
|
require 'pione/agent/process-manager'
|
152
124
|
require 'pione/agent/trivial-routine-worker'
|
153
125
|
require 'pione/agent/tuple-space-server-client-life-checker'
|
126
|
+
require 'pione/agent/messenger'
|
154
127
|
|
155
128
|
# front
|
156
129
|
require 'pione/front/basic-front'
|
@@ -176,12 +149,15 @@ module Pione
|
|
176
149
|
include System
|
177
150
|
include Relay
|
178
151
|
include Util
|
179
|
-
include
|
152
|
+
include Log::MessageLog
|
180
153
|
include Model
|
181
154
|
include TupleSpace
|
182
155
|
include Parser
|
183
156
|
include Transformer
|
184
157
|
|
158
|
+
extend Util::Evaluatable
|
159
|
+
|
160
|
+
module_function :debug_mode
|
185
161
|
module_function :debug_mode=
|
186
162
|
module_function :debug_mode?
|
187
163
|
end
|
data/lib/pione/agent/broker.rb
CHANGED
@@ -126,7 +126,7 @@ module Pione
|
|
126
126
|
|
127
127
|
# Create a task worker for the server.
|
128
128
|
def create_task_worker(tuple_space_server)
|
129
|
-
connection_id = Util.
|
129
|
+
connection_id = Util::UUID.generate
|
130
130
|
@assignment_table[connection_id] = tuple_space_server
|
131
131
|
Thread.new do
|
132
132
|
begin
|
@@ -40,7 +40,7 @@ module Pione
|
|
40
40
|
def initialize(tuple_space_server, dir)
|
41
41
|
raise Argument.new(dir) unless dir.kind_of?(Location::BasicLocation) or dir.nil?
|
42
42
|
super(tuple_space_server)
|
43
|
-
@gen = dir ? dir.
|
43
|
+
@gen = dir ? dir.file_entries.to_enum : [].each
|
44
44
|
end
|
45
45
|
|
46
46
|
def generate
|
data/lib/pione/agent/logger.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
module Pione
|
2
2
|
module Agent
|
3
|
-
# Logger is an agent for logging
|
3
|
+
# Logger is an agent for logging process events like agent activity or rule
|
4
|
+
# process.
|
4
5
|
class Logger < TupleSpaceClient
|
5
6
|
set_agent_type :logger
|
6
7
|
|
7
8
|
# @return [BasicLocation]
|
8
|
-
attr_reader :
|
9
|
+
attr_reader :log_location
|
9
10
|
|
10
11
|
# @return [Pathname]
|
11
|
-
attr_reader :
|
12
|
-
|
13
|
-
# @return [Array<Log::ProcessRecord>]
|
14
|
-
attr_reader :records
|
12
|
+
attr_reader :output_location
|
15
13
|
|
16
14
|
# Create a logger agent.
|
17
15
|
#
|
@@ -21,22 +19,17 @@ module Pione
|
|
21
19
|
# the path to store log records
|
22
20
|
def initialize(tuple_space_server, location)
|
23
21
|
super(tuple_space_server)
|
24
|
-
@
|
25
|
-
@
|
26
|
-
@
|
27
|
-
@records = []
|
22
|
+
@log_id = Time.now.iso8601(3)
|
23
|
+
@log_location = get_log_location(location)
|
24
|
+
@output_location = get_output_location
|
28
25
|
end
|
29
26
|
|
30
27
|
define_state :initialized
|
31
|
-
define_state :
|
32
|
-
define_state :store
|
28
|
+
define_state :record
|
33
29
|
define_state :terminated
|
34
30
|
|
35
|
-
define_state_transition :initialized => :
|
36
|
-
define_state_transition :
|
37
|
-
define_state_transition :store => :take
|
38
|
-
|
39
|
-
define_exception_handler Exception => :terminated
|
31
|
+
define_state_transition :initialized => :record
|
32
|
+
define_state_transition :record => :record
|
40
33
|
|
41
34
|
# Sleeps till the logger clears logs.
|
42
35
|
#
|
@@ -44,52 +37,72 @@ module Pione
|
|
44
37
|
# timespan for clearing logs
|
45
38
|
# @return [void]
|
46
39
|
def wait_to_clear_logs(timespan=0.1)
|
47
|
-
while count_tuple(Tuple[:
|
40
|
+
while count_tuple(Tuple[:process_log].any) > 0
|
48
41
|
sleep timespan
|
49
42
|
end
|
50
43
|
end
|
51
44
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
45
|
+
# Record process_log tuples.
|
46
|
+
def transit_to_record
|
47
|
+
begin
|
48
|
+
write_records(take_all(Tuple[:process_log].any))
|
49
|
+
rescue => e
|
50
|
+
# logger is terminated at last in termination processes, so tuple space may be closed
|
51
|
+
ErrorReport.warn("Failed to take process logs.", self, e, __FILE__, __LINE__)
|
52
|
+
terminate
|
60
53
|
end
|
61
54
|
end
|
62
55
|
|
56
|
+
# Copy from output to log when log and output are different.
|
57
|
+
def transit_to_terminated
|
58
|
+
begin
|
59
|
+
write_records(take_all!(Tuple[:process_log].any))
|
60
|
+
rescue => e
|
61
|
+
# logger is terminated at last in termination processes, so tuple space may be closed
|
62
|
+
ErrorReport.warn("Failed to take process logs.", self, e, __FILE__, __LINE__)
|
63
|
+
end
|
64
|
+
if @log_location != @output_location
|
65
|
+
@output_location.copy(@log_location)
|
66
|
+
end
|
67
|
+
super
|
68
|
+
end
|
69
|
+
|
63
70
|
private
|
64
71
|
|
65
|
-
#
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
end
|
75
|
-
rescue TimeoutError
|
76
|
-
if @current_tuple
|
77
|
-
@records << @current_tuple.message
|
78
|
-
@current_tuple = nil
|
72
|
+
# Write records with sorting.
|
73
|
+
#
|
74
|
+
# @param tuples [Array<Tuple::LogTuple>]
|
75
|
+
# records
|
76
|
+
# @return [void]
|
77
|
+
def write_records(tuples)
|
78
|
+
tuples.sort{|a,b| a.timestamp <=> b.timestamp}.each do |tuple|
|
79
|
+
@output_location.append tuple.message.format(@log_id) + "\n"
|
79
80
|
end
|
80
81
|
end
|
81
82
|
|
82
|
-
#
|
83
|
-
|
84
|
-
|
83
|
+
# Get the log location. If the location is a directory, log filename is
|
84
|
+
# "pione-process.log".
|
85
|
+
#
|
86
|
+
# @param location [BasicLocation]
|
87
|
+
# location
|
88
|
+
# @return [BasicLocation]
|
89
|
+
# log location
|
90
|
+
def get_log_location(location)
|
91
|
+
if location.directory?
|
92
|
+
location + "pione-process.log"
|
93
|
+
else
|
94
|
+
location
|
95
|
+
end
|
85
96
|
end
|
86
97
|
|
87
|
-
#
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
98
|
+
# Get the output location. If the log location is not suportted append
|
99
|
+
# writing, output location is in local filesystem.
|
100
|
+
def get_output_location
|
101
|
+
if @log_location.real_appendable?
|
102
|
+
@log_location
|
103
|
+
else
|
104
|
+
Location[Pione.temporary_path(@log_location.basename)]
|
105
|
+
end
|
93
106
|
end
|
94
107
|
end
|
95
108
|
|