rules_engine_templates 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. data/VERSION +1 -1
  2. data/rails_generators/manifests/plan_start.rb +26 -0
  3. data/rails_generators/manifests/plan_start.yml +20 -0
  4. data/rails_generators/manifests/tweet_filter.rb +2 -4
  5. data/rails_generators/manifests/tweet_filter.yml +2 -5
  6. data/rails_generators/manifests/tweet_reader.rb +26 -0
  7. data/rails_generators/manifests/tweet_reader.yml +20 -0
  8. data/rails_generators/manifests/workflow_start.rb +26 -0
  9. data/rails_generators/manifests/workflow_start.yml +20 -0
  10. data/rails_generators/manifests/workflow_stop.rb +26 -0
  11. data/rails_generators/manifests/workflow_stop.yml +20 -0
  12. data/rails_generators/templates/app/rules/plan_start.rb +89 -0
  13. data/rails_generators/templates/app/rules/tweet_filter.rb +6 -3
  14. data/rails_generators/templates/app/rules/tweet_reader.rb +99 -0
  15. data/rails_generators/templates/app/rules/workflow_start.rb +84 -0
  16. data/rails_generators/templates/app/rules/workflow_stop.rb +80 -0
  17. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_edit.html.erb +1 -0
  18. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_form.html.erb +21 -0
  19. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_help.html.erb +1 -0
  20. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_new.html.erb +1 -0
  21. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_edit.html.erb +1 -5
  22. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_form.html.erb +34 -0
  23. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/{_word.html.erb → _form_word.html.erb} +0 -0
  24. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_help.html.erb +1 -1
  25. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_new.html.erb +1 -5
  26. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_edit.html.erb +1 -0
  27. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_form.html.erb +29 -0
  28. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_help.html.erb +1 -0
  29. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_new.html.erb +1 -0
  30. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_edit.html.erb +1 -0
  31. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_form.html.erb +21 -0
  32. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_help.html.erb +1 -0
  33. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_new.html.erb +1 -0
  34. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_edit.html.erb +1 -0
  35. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_form.html.erb +25 -0
  36. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_help.html.erb +1 -0
  37. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_new.html.erb +1 -0
  38. data/rails_generators/templates/spec/lib/rules/plan_start_spec.rb +237 -0
  39. data/rails_generators/templates/spec/lib/rules/tweet_filter_spec.rb +61 -10
  40. data/rails_generators/templates/spec/lib/rules/tweet_reader_spec.rb +272 -0
  41. data/rails_generators/templates/spec/lib/rules/workflow_start_spec.rb +223 -0
  42. data/rails_generators/templates/spec/lib/rules/workflow_stop_spec.rb +212 -0
  43. metadata +38 -8
  44. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_script.html.erb +0 -8
  45. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_title.html.erb +0 -7
  46. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_words.html.erb +0 -16
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -0,0 +1,26 @@
1
+ class PlanStartManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/plan_start.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/plan_start/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/plan_start/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/plan_start/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/plan_start/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/plan_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - plan_start : rule_name
9
+ - PlanStart : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/plan_start
13
+
14
+ files :
15
+ - app/rules/plan_start.rb
16
+ - app/views/re_rule_definitions/plan_start/_edit.html.erb
17
+ - app/views/re_rule_definitions/plan_start/_form.html.erb
18
+ - app/views/re_rule_definitions/plan_start/_help.html.erb
19
+ - app/views/re_rule_definitions/plan_start/_new.html.erb
20
+ - spec/lib/rules/plan_start_spec.rb
@@ -17,12 +17,10 @@ class TweetFilterManifest
17
17
 
18
18
  m.template "app/rules/tweet_filter.rb", "app/rules/#{rule_name}.rb"
19
19
  m.template "app/views/re_rule_definitions/tweet_filter/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_filter/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_filter/_form_word.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form_word.html.erb"
20
22
  m.template "app/views/re_rule_definitions/tweet_filter/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
23
  m.template "app/views/re_rule_definitions/tweet_filter/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
- m.template "app/views/re_rule_definitions/tweet_filter/_script.html.erb", "app/views/re_rule_definitions/#{rule_name}/_script.html.erb"
23
- m.template "app/views/re_rule_definitions/tweet_filter/_title.html.erb", "app/views/re_rule_definitions/#{rule_name}/_title.html.erb"
24
- m.template "app/views/re_rule_definitions/tweet_filter/_word.html.erb", "app/views/re_rule_definitions/#{rule_name}/_word.html.erb"
25
- m.template "app/views/re_rule_definitions/tweet_filter/_words.html.erb", "app/views/re_rule_definitions/#{rule_name}/_words.html.erb"
26
24
  m.template "spec/lib/rules/tweet_filter_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
27
25
 
28
26
  end
@@ -14,11 +14,8 @@ templates :
14
14
  files :
15
15
  - app/rules/tweet_filter.rb
16
16
  - app/views/re_rule_definitions/tweet_filter/_edit.html.erb
17
+ - app/views/re_rule_definitions/tweet_filter/_form_word.html.erb
18
+ - app/views/re_rule_definitions/tweet_filter/_form.html.erb
17
19
  - app/views/re_rule_definitions/tweet_filter/_help.html.erb
18
20
  - app/views/re_rule_definitions/tweet_filter/_new.html.erb
19
- - app/views/re_rule_definitions/tweet_filter/_script.html.erb
20
- - app/views/re_rule_definitions/tweet_filter/_title.html.erb
21
- - app/views/re_rule_definitions/tweet_filter/_word.html.erb
22
- - app/views/re_rule_definitions/tweet_filter/_words.html.erb
23
21
  - spec/lib/rules/tweet_filter_spec.rb
24
-
@@ -0,0 +1,26 @@
1
+ class TweetReaderManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/tweet_reader.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/tweet_reader/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_reader/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_reader/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/tweet_reader/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/tweet_reader_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - tweet_reader : rule_name
9
+ - TweetReader : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/tweet_reader
13
+
14
+ files :
15
+ - app/rules/tweet_reader.rb
16
+ - app/views/re_rule_definitions/tweet_reader/_edit.html.erb
17
+ - app/views/re_rule_definitions/tweet_reader/_form.html.erb
18
+ - app/views/re_rule_definitions/tweet_reader/_help.html.erb
19
+ - app/views/re_rule_definitions/tweet_reader/_new.html.erb
20
+ - spec/lib/rules/tweet_reader_spec.rb
@@ -0,0 +1,26 @@
1
+ class WorkflowStartManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/workflow_start.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/workflow_start/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/workflow_start/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/workflow_start/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/workflow_start/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/workflow_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - workflow_start : rule_name
9
+ - WorkflowStart : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/workflow_start
13
+
14
+ files :
15
+ - app/rules/workflow_start.rb
16
+ - app/views/re_rule_definitions/workflow_start/_edit.html.erb
17
+ - app/views/re_rule_definitions/workflow_start/_form.html.erb
18
+ - app/views/re_rule_definitions/workflow_start/_help.html.erb
19
+ - app/views/re_rule_definitions/workflow_start/_new.html.erb
20
+ - spec/lib/rules/workflow_start_spec.rb
@@ -0,0 +1,26 @@
1
+ class WorkflowStopManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/workflow_stop.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/workflow_stop/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/workflow_stop/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/workflow_stop/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/workflow_stop/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/workflow_stop_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - workflow_stop : rule_name
9
+ - WorkflowStop : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/workflow_stop
13
+
14
+ files :
15
+ - app/rules/workflow_stop.rb
16
+ - app/views/re_rule_definitions/workflow_stop/_edit.html.erb
17
+ - app/views/re_rule_definitions/workflow_stop/_form.html.erb
18
+ - app/views/re_rule_definitions/workflow_stop/_help.html.erb
19
+ - app/views/re_rule_definitions/workflow_stop/_new.html.erb
20
+ - spec/lib/rules/workflow_stop_spec.rb
@@ -0,0 +1,89 @@
1
+ module RulesEngine
2
+ module Rule
3
+ class <%=rule_class%> < RulesEngine::Rule::Definition
4
+
5
+ attr_reader :plan
6
+
7
+ ##################################################################
8
+ # class options
9
+ self.options =
10
+ {
11
+ :group => 'Workflow',
12
+ :display_name => 'Plan Start',
13
+ :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
14
+ :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
15
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
16
+ }
17
+
18
+ ##################################################################
19
+ # set the rule data
20
+ def data= data
21
+ if data.nil?
22
+ @title = nil
23
+ @plan = nil
24
+ else
25
+ @title, @plan = ActiveSupport::JSON.decode(data)
26
+ end
27
+ end
28
+
29
+ ##################################################################
30
+ # get the rule attributes
31
+ def title
32
+ @title
33
+ end
34
+
35
+ def summary
36
+ "Run the plan : #{plan}"
37
+ end
38
+
39
+ def data
40
+ [title, plan].to_json
41
+ end
42
+
43
+ def expected_outcomes
44
+ [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE}]
45
+ end
46
+
47
+ ##################################################################
48
+ # set the rule attributes
49
+ def attributes=(params)
50
+ param_hash = params.symbolize_keys
51
+
52
+ @title = param_hash[:<%=rule_name%>_title]
53
+ @plan = param_hash[:<%=rule_name%>_plan]
54
+ end
55
+
56
+ ##################################################################
57
+ # validation and errors
58
+ def valid?
59
+ @errors = {}
60
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
61
+ @errors[:<%=rule_name%>_plan] = "Plan required" if plan.blank?
62
+ return @errors.empty?
63
+ end
64
+
65
+ ##################################################################
66
+ # callbacks when the rule is added and removed from a workflow
67
+ def before_create()
68
+ end
69
+
70
+ def before_update()
71
+ end
72
+
73
+ def before_destroy()
74
+ end
75
+
76
+ ##################################################################
77
+ # execute the rule
78
+ def process(process_id, data)
79
+ sub_process_id = RulesEngine::Process.runner.create
80
+
81
+ RulesEngine::Process.auditor.audit(process_id, "Starting Sub Plan #{sub_process_id}", RulesEngine::Process::AUDIT_INFO)
82
+ success = RulesEngine::Process.runner.run(sub_process_id, plan, data)
83
+ RulesEngine::Process.auditor.audit(process_id, "Finished Sub Plan #{sub_process_id}", success ? RulesEngine::Process::AUDIT_SUCCESS : RulesEngine::Process::AUDIT_FAILURE)
84
+
85
+ return success ? RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT) : RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_FAILURE)
86
+ end
87
+ end
88
+ end
89
+ end
@@ -72,10 +72,13 @@ module RulesEngine
72
72
 
73
73
  ##################################################################
74
74
  # callbacks when the rule is added and removed from a workflow
75
- def after_add_to_workflow(workflow_code)
75
+ def before_create()
76
76
  end
77
77
 
78
- def before_remove_from_workflow(workflow_code)
78
+ def before_update()
79
+ end
80
+
81
+ def before_destroy()
79
82
  end
80
83
 
81
84
  ##################################################################
@@ -91,7 +94,7 @@ module RulesEngine
91
94
 
92
95
  words.each do |word|
93
96
  if /#{word}/i =~ tweet
94
- RulesEngine::Process.auditor.audit(process_id, "#{title} Found #{word}", RulesEngine::Process::AUDIT_INFO)
97
+ RulesEngine::Process.auditor.audit(process_id, "Found #{word}", RulesEngine::Process::AUDIT_INFO)
95
98
  data[:match] = word
96
99
  return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_SUCCESS)
97
100
  end
@@ -0,0 +1,99 @@
1
+ require 'twitter'
2
+
3
+ MAX_PAGES = 5 unless defined?(MAX_PAGES)
4
+ TWITTER_RPP = 40 unless defined?(TWITTER_RPP)
5
+
6
+ module RulesEngine
7
+ module Rule
8
+ class <%=rule_class%> < RulesEngine::Rule::Definition
9
+
10
+ attr_reader :message
11
+ attr_reader :plan
12
+
13
+ ##################################################################
14
+ # class options
15
+ self.options =
16
+ {
17
+ :group => 'Twitter',
18
+ :display_name => 'Twitter Reader',
19
+ :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
20
+ :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
21
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
22
+ }
23
+
24
+ ##################################################################
25
+ # set the rule data
26
+ def data= data
27
+ if data.nil?
28
+ @title = nil
29
+ @message = nil
30
+ @plan = nil
31
+ else
32
+ @title, @message, @plan = ActiveSupport::JSON.decode(data)
33
+ end
34
+ end
35
+
36
+ ##################################################################
37
+ # get the rule attributes
38
+ def title
39
+ @title
40
+ end
41
+
42
+ def summary
43
+ "Look for \"#{message}\" and send matches to the plan : #{plan}"
44
+ end
45
+
46
+ def data
47
+ [title, message, plan].to_json
48
+ end
49
+
50
+ def expected_outcomes
51
+ [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE}]
52
+ end
53
+
54
+ ##################################################################
55
+ # set the rule attributes
56
+ def attributes=(params)
57
+ param_hash = params.symbolize_keys
58
+
59
+ @title = param_hash[:<%=rule_name%>_title]
60
+ @message = param_hash[:<%=rule_name%>_message]
61
+ @plan = param_hash[:<%=rule_name%>_plan]
62
+ end
63
+
64
+ ##################################################################
65
+ # validation and errors
66
+ def valid?
67
+ @errors = {}
68
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
69
+ @errors[:<%=rule_name%>_message] = "Message required" if message.blank?
70
+ @errors[:<%=rule_name%>_plan] = "Plan required" if plan.blank?
71
+ return @errors.empty?
72
+ end
73
+
74
+ ##################################################################
75
+ # callbacks when the rule is added and removed from a workflow
76
+ def before_create()
77
+ end
78
+
79
+ def before_update()
80
+ end
81
+
82
+ def before_destroy()
83
+ end
84
+
85
+ ##################################################################
86
+ # execute the rule
87
+ def process(process_id, data)
88
+
89
+ sub_process_id = RulesEngine::Process.runner.create
90
+
91
+ RulesEngine::Process.auditor.audit(process_id, "Starting Sub Plan #{sub_process_id}", RulesEngine::Process::AUDIT_INFO)
92
+ success = RulesEngine::Process.runner.run(sub_process_id, plan, data.merge(:message => message))
93
+ RulesEngine::Process.auditor.audit(process_id, "Finished Sub Plan #{sub_process_id}", success ? RulesEngine::Process::AUDIT_SUCCESS : RulesEngine::Process::AUDIT_FAILURE)
94
+
95
+ return success ? RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT) : RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_FAILURE)
96
+ end
97
+ end
98
+ end
99
+ end