Skip to content

Commit 9182277

Browse files
committed
fix ci
1 parent 16c34bf commit 9182277

File tree

5 files changed

+39
-34
lines changed

5 files changed

+39
-34
lines changed

.github/workflows/ci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,5 @@ jobs:
4040
sudo apt-get install graphviz
4141
gem install bundler
4242
bundle install --jobs 4 --retry 3
43+
bundle exec rake app:wf
4344
bundle exec rails app:db:create && bundle exec rails app:db:migrate && bundle exec rails test

app/models/wf/lola.rb

+6-32
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,5 @@
11
# frozen_string_literal: true
22

3-
## generate lola format file.
4-
5-
# PLACE P1,P2,P3;
6-
7-
# MARKING P1;
8-
9-
# TRANSITION T1
10-
# CONSUME P1:1;
11-
# PRODUCE P3:1;
12-
13-
# TRANSITION T2
14-
# CONSUME P3:1;
15-
# PRODUCE P2:1;
16-
17-
## checking
18-
19-
# reachability of final marking
20-
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AGEF(P1 = 0 AND P3 = 0 AND P2 = 1)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-reachability_of_final_marking.json
21-
22-
# quasiliveness
23-
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AG NOT FIREABLE (T1)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-dead_transition_1.json
24-
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AG NOT FIREABLE (T2)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-dead_transition_2.json
25-
# deadlock
26-
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="EF (DEADLOCK AND (P2 = 0))" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-deadlock.json
27-
283
module Wf
294
class Lola
305
attr_reader :end_p, :start_p, :workflow
@@ -77,13 +52,6 @@ def soundness?
7752
reachability_of_final_marking? && quasiliveness? && !deadlock?
7853
end
7954

80-
def deadlock?
81-
formula = "EF (DEADLOCK AND (#{end_p.lola_id} = 0))"
82-
result = run_cmd(formula, "deadlock")
83-
result.dig("analysis", "result")
84-
end
85-
86-
# reachability of final marking
8755
def reachability_of_final_marking?
8856
formula = workflow.places.reject { |p| p == end_p }.map { |p| "#{p.lola_id} = 0" }.join(" AND ")
8957
formula += " AND #{end_p.lola_id} = 1"
@@ -96,6 +64,12 @@ def quasiliveness?
9664
workflow.transitions.all? { |t| !dead_transition?(t) }
9765
end
9866

67+
def deadlock?
68+
formula = "EF (DEADLOCK AND (#{end_p.lola_id} = 0))"
69+
result = run_cmd(formula, "deadlock")
70+
result.dig("analysis", "result")
71+
end
72+
9973
private
10074

10175
def dead_transition?(transition)

lib/tasks/wf_tasks.rake

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ task wf: :environment do
1010
puts `cd #{Rails.root.join("tmp")} && tar -zxvf lola.tar.gz`
1111
puts `cd #{Rails.root.join("tmp/lola-2.0")} && ./configure`
1212
puts `cd #{Rails.root.join("tmp/lola-2.0")} && make`
13-
puts `cd #{Rails.root.join("tmp/lola-2.0")} && make install`
13+
puts `cd #{Rails.root.join("tmp/lola-2.0")} && sudo make install`
1414
puts `lola --help`
1515
end

lib/wf.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ class << self
3939
self.user_class = "::Wf::User"
4040
self.org_classes = { group: "::Wf::Group" }
4141
self.finish_conditions = ["Wf::MultipleInstances::AllFinish"]
42-
self.use_lola = true
42+
self.use_lola = false
4343
end

lola.md

+30
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,33 @@ LoLA can answer reachability queries using the flag '-f' followed by 'REACHABLE'
1515
Positive reachability queries can be witnessed by a state and a path using flags -s and -p respectively.
1616

1717
The tool documentation can be found at http://download.gna.org/service-tech/lola/lola.pdf.
18+
19+
## Check Workflow Net
20+
21+
```
22+
## generate lola format file.
23+
24+
# PLACE P1,P2,P3;
25+
26+
# MARKING P1;
27+
28+
# TRANSITION T1
29+
# CONSUME P1:1;
30+
# PRODUCE P3:1;
31+
32+
# TRANSITION T2
33+
# CONSUME P3:1;
34+
# PRODUCE P2:1;
35+
36+
## checking
37+
38+
# reachability of final marking
39+
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AGEF(P1 = 0 AND P3 = 0 AND P2 = 1)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-reachability_of_final_marking.json
40+
41+
# quasiliveness
42+
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AG NOT FIREABLE (T1)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-dead_transition_1.json
43+
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="AG NOT FIREABLE (T2)" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-dead_transition_2.json
44+
# deadlock
45+
# lola /Users/hooopo/w/wf/test/dummy/tmp/1-1582990693.lola --formula="EF (DEADLOCK AND (P2 = 0))" --json=/Users/hooopo/w/wf/test/dummy/tmp/1-deadlock.json
46+
```
47+

0 commit comments

Comments
 (0)