rules_engine 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (461) hide show
  1. data/README.textile +178 -0
  2. data/VERSION +1 -1
  3. data/lib/rules_engine.rb +17 -1
  4. data/lib/rules_engine/discovery.rb +2 -3
  5. data/lib/rules_engine/job.rb +120 -0
  6. data/lib/rules_engine/rule.rb +49 -24
  7. data/lib/rules_engine/rule_outcome.rb +1 -2
  8. data/lib/rules_engine_view/alerts.rb +56 -0
  9. data/lib/rules_engine_view/boxes.rb +32 -0
  10. data/lib/rules_engine_view/buttons.rb +91 -0
  11. data/lib/rules_engine_view/defer.rb +27 -0
  12. data/lib/rules_engine_view/form_builder.rb +63 -0
  13. data/lib/rules_engine_view/form_fields.rb +41 -0
  14. data/lib/rules_engine_view/form_styles.rb +107 -0
  15. data/lib/rules_engine_view/model_loader.rb +71 -0
  16. data/lib/rules_engine_view/navigate.rb +44 -0
  17. data/rails_generators/manifests/rules_engine.rb +392 -0
  18. data/rails_generators/manifests/rules_engine.yml +98 -0
  19. data/rails_generators/manifests/rules_engine_complex.rb +30 -0
  20. data/rails_generators/manifests/rules_engine_complex.yml +25 -0
  21. data/rails_generators/manifests/rules_engine_simple.rb +26 -0
  22. data/rails_generators/manifests/rules_engine_simple.yml +22 -0
  23. data/rails_generators/rules_engine_generator.rb +49 -23
  24. data/rails_generators/templates/app/controllers/re_jobs_controller.rb +8 -6
  25. data/rails_generators/templates/app/controllers/re_pipeline_jobs_controller.rb +6 -7
  26. data/rails_generators/templates/app/controllers/re_pipelines_controller.rb +36 -16
  27. data/rails_generators/templates/app/controllers/re_rules_controller.rb +49 -51
  28. data/rails_generators/templates/app/helpers/re_pipeline_helper.rb +0 -15
  29. data/rails_generators/templates/app/models/re_job.rb +55 -62
  30. data/rails_generators/templates/app/models/re_job_audit.rb +3 -7
  31. data/rails_generators/templates/app/models/re_pipeline.rb +1 -23
  32. data/rails_generators/templates/app/models/re_pipeline_activated.rb +3 -0
  33. data/rails_generators/templates/app/models/re_pipeline_activated_observer.rb +4 -4
  34. data/rails_generators/templates/app/models/re_pipeline_base.rb +5 -5
  35. data/rails_generators/templates/app/models/re_rule.rb +71 -24
  36. data/rails_generators/templates/app/models/re_rule_expected_outcome.rb +30 -0
  37. data/rails_generators/templates/app/rules/complex_rule.rb +133 -0
  38. data/rails_generators/templates/app/rules/simple_rule.rb +77 -0
  39. data/rails_generators/templates/app/views/layouts/rules_engine.html.erb +40 -0
  40. data/rails_generators/templates/app/views/re_jobs/_empty.html.erb +7 -4
  41. data/rails_generators/templates/app/views/re_jobs/_index_large.html.erb +79 -0
  42. data/rails_generators/templates/app/views/re_jobs/_index_small.html.erb +42 -0
  43. data/rails_generators/templates/app/views/re_jobs/_show.html.erb +11 -16
  44. data/rails_generators/templates/app/views/re_jobs/index.html.erb +11 -19
  45. data/rails_generators/templates/app/views/re_jobs/index.js.erb +9 -6
  46. data/rails_generators/templates/app/views/re_jobs/show.html.erb +10 -8
  47. data/rails_generators/templates/app/views/re_jobs/show.js.erb +4 -1
  48. data/rails_generators/templates/app/views/re_pipeline_jobs/index.html.erb +10 -16
  49. data/rails_generators/templates/app/views/re_pipeline_jobs/index.js.erb +10 -8
  50. data/rails_generators/templates/app/views/re_pipelines/_change.html.erb +17 -15
  51. data/rails_generators/templates/app/views/re_pipelines/_change_actions.html.erb +12 -12
  52. data/rails_generators/templates/app/views/re_pipelines/_confirm.html.erb +14 -15
  53. data/rails_generators/templates/app/views/re_pipelines/_edit.html.erb +7 -8
  54. data/rails_generators/templates/app/views/re_pipelines/_empty.html.erb +4 -4
  55. data/rails_generators/templates/app/views/re_pipelines/_index.html.erb +25 -19
  56. data/rails_generators/templates/app/views/re_pipelines/_new.html.erb +6 -6
  57. data/rails_generators/templates/app/views/re_pipelines/_show.html.erb +22 -18
  58. data/rails_generators/templates/app/views/re_pipelines/change.html.erb +8 -8
  59. data/rails_generators/templates/app/views/re_pipelines/create.js.erb +6 -5
  60. data/rails_generators/templates/app/views/re_pipelines/edit.html.erb +5 -4
  61. data/rails_generators/templates/app/views/re_pipelines/edit.js.erb +6 -3
  62. data/rails_generators/templates/app/views/re_pipelines/index.html.erb +65 -9
  63. data/rails_generators/templates/app/views/re_pipelines/index.js.erb +18 -0
  64. data/rails_generators/templates/app/views/re_pipelines/new.html.erb +2 -2
  65. data/rails_generators/templates/app/views/re_pipelines/new.js.erb +3 -3
  66. data/rails_generators/templates/app/views/re_pipelines/show.html.erb +17 -19
  67. data/rails_generators/templates/app/views/re_pipelines/template.html.erb +198 -0
  68. data/rails_generators/templates/app/views/re_pipelines/update.js.erb +7 -6
  69. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_edit.html.erb +7 -0
  70. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_help.html.erb +1 -0
  71. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_new.html.erb +7 -0
  72. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_pipeline.html.erb +22 -0
  73. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_script.html.erb +26 -0
  74. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_title.html.erb +7 -0
  75. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_word.html.erb +13 -0
  76. data/rails_generators/templates/app/views/re_rule_definitions/complex_rule/_words.html.erb +16 -0
  77. data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_edit.html.erb +1 -0
  78. data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_form.html.erb +16 -0
  79. data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_help.html.erb +1 -0
  80. data/rails_generators/templates/app/views/re_rule_definitions/simple_rule/_new.html.erb +1 -0
  81. data/rails_generators/templates/app/views/re_rules/_change.html.erb +25 -25
  82. data/rails_generators/templates/app/views/re_rules/_edit.html.erb +7 -16
  83. data/rails_generators/templates/app/views/re_rules/_empty.html.erb +4 -4
  84. data/rails_generators/templates/app/views/re_rules/_empty.js.erb +3 -3
  85. data/rails_generators/templates/app/views/re_rules/_error.html.erb +2 -0
  86. data/rails_generators/templates/app/views/re_rules/_help.html.erb +5 -5
  87. data/rails_generators/templates/app/views/re_rules/_index.html.erb +15 -15
  88. data/rails_generators/templates/app/views/re_rules/_menu.html.erb +32 -36
  89. data/rails_generators/templates/app/views/re_rules/_new.html.erb +9 -18
  90. data/rails_generators/templates/app/views/re_rules/_show.html.erb +17 -17
  91. data/rails_generators/templates/app/views/re_rules/destroy.js.erb +7 -6
  92. data/rails_generators/templates/app/views/re_rules/edit.html.erb +6 -5
  93. data/rails_generators/templates/app/views/re_rules/edit.js.erb +6 -3
  94. data/rails_generators/templates/app/views/re_rules/error.html.erb +6 -5
  95. data/rails_generators/templates/app/views/re_rules/error.js.erb +6 -2
  96. data/rails_generators/templates/app/views/re_rules/help.html.erb +6 -5
  97. data/rails_generators/templates/app/views/re_rules/help.js.erb +3 -1
  98. data/rails_generators/templates/app/views/re_rules/new.html.erb +14 -10
  99. data/rails_generators/templates/app/views/re_rules/new.js.erb +7 -3
  100. data/rails_generators/templates/app/views/re_rules/update.js.erb +11 -10
  101. data/rails_generators/templates/db/migrate/20100308225008_create_re_pipelines.rb +13 -10
  102. data/rails_generators/templates/doc/README.rules_engine +151 -0
  103. data/rails_generators/templates/doc/README.rules_engine_features +67 -0
  104. data/rails_generators/templates/doc/README.rules_engine_view +90 -0
  105. data/rails_generators/templates/features/re_pipeline/lookup.feature +16 -0
  106. data/rails_generators/templates/features/step_definitions/common/re_debug_steps.rb +14 -0
  107. data/rails_generators/templates/features/step_definitions/common/re_error_steps.rb +77 -0
  108. data/rails_generators/templates/features/step_definitions/common/re_form_steps.rb +59 -0
  109. data/rails_generators/templates/features/step_definitions/common/re_model_steps.rb +85 -0
  110. data/rails_generators/templates/features/step_definitions/common/re_user_steps.rb +52 -0
  111. data/rails_generators/templates/features/step_definitions/common/re_view_steps.rb +49 -0
  112. data/rails_generators/templates/features/support/blueprint_re_pipelines.rb +20 -0
  113. data/rails_generators/templates/features/support/rules_engine.rb +28 -0
  114. data/rails_generators/templates/lib/tasks/re_execute.rake +19 -0
  115. data/rails_generators/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
  116. data/rails_generators/templates/public/javascripts/jquery.autocomplete.pack.js +13 -0
  117. data/rails_generators/templates/public/javascripts/jquery.blockUI.js +486 -0
  118. data/rails_generators/templates/public/javascripts/jquery.fancybox-1.3.1.js +1077 -0
  119. data/rails_generators/templates/public/javascripts/re_job_index.js +75 -0
  120. data/rails_generators/templates/public/javascripts/re_pipeline_change.js +85 -96
  121. data/rails_generators/templates/public/javascripts/re_pipeline_index.js +23 -7
  122. data/rails_generators/templates/public/javascripts/re_pipeline_index_jobs.js +10 -0
  123. data/rails_generators/templates/public/javascripts/re_pipeline_new.js +15 -19
  124. data/rails_generators/templates/public/javascripts/re_pipeline_show_jobs.js +11 -0
  125. data/rails_generators/templates/public/javascripts/re_view.js +132 -0
  126. data/rails_generators/templates/public/stylesheets/blueprint/ie.css +35 -0
  127. data/rails_generators/templates/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  128. data/rails_generators/templates/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  129. data/rails_generators/templates/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  130. data/rails_generators/templates/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  131. data/rails_generators/templates/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  132. data/rails_generators/templates/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  133. data/rails_generators/templates/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  134. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  135. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  136. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  137. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  138. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  139. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  140. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  141. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  142. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  143. data/rails_generators/templates/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  144. data/rails_generators/templates/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  145. data/rails_generators/templates/public/stylesheets/blueprint/plugins/rtl/screen.css +110 -0
  146. data/rails_generators/templates/public/stylesheets/blueprint/print.css +29 -0
  147. data/rails_generators/templates/public/stylesheets/blueprint/screen.css +258 -0
  148. data/rails_generators/templates/public/stylesheets/blueprint/src/forms.css +65 -0
  149. data/rails_generators/templates/public/stylesheets/blueprint/src/grid.css +280 -0
  150. data/rails_generators/templates/public/stylesheets/blueprint/src/grid.png +0 -0
  151. data/rails_generators/templates/public/stylesheets/blueprint/src/ie.css +76 -0
  152. data/rails_generators/templates/public/stylesheets/blueprint/src/print.css +85 -0
  153. data/rails_generators/templates/public/stylesheets/blueprint/src/reset.css +45 -0
  154. data/rails_generators/templates/public/stylesheets/blueprint/src/typography.css +106 -0
  155. data/rails_generators/templates/public/stylesheets/fancybox/blank.gif +0 -0
  156. data/rails_generators/templates/public/stylesheets/fancybox/fancy_close.png +0 -0
  157. data/rails_generators/templates/public/stylesheets/fancybox/fancy_loading.png +0 -0
  158. data/rails_generators/templates/public/stylesheets/fancybox/fancy_nav_left.png +0 -0
  159. data/rails_generators/templates/public/stylesheets/fancybox/fancy_nav_right.png +0 -0
  160. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_e.png +0 -0
  161. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_n.png +0 -0
  162. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_ne.png +0 -0
  163. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_nw.png +0 -0
  164. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_s.png +0 -0
  165. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_se.png +0 -0
  166. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_sw.png +0 -0
  167. data/rails_generators/templates/public/stylesheets/fancybox/fancy_shadow_w.png +0 -0
  168. data/rails_generators/templates/public/stylesheets/fancybox/fancy_title_left.png +0 -0
  169. data/rails_generators/templates/public/stylesheets/fancybox/fancy_title_main.png +0 -0
  170. data/rails_generators/templates/public/stylesheets/fancybox/fancy_title_over.png +0 -0
  171. data/rails_generators/templates/public/stylesheets/fancybox/fancy_title_right.png +0 -0
  172. data/rails_generators/templates/public/stylesheets/fancybox/fancybox-x.png +0 -0
  173. data/rails_generators/templates/public/stylesheets/fancybox/fancybox-y.png +0 -0
  174. data/rails_generators/templates/public/stylesheets/fancybox/fancybox.png +0 -0
  175. data/rails_generators/templates/public/stylesheets/fancybox/jquery.fancybox-1.3.1.css +363 -0
  176. data/rails_generators/templates/public/stylesheets/jquery.autocomplete.css +53 -0
  177. data/rails_generators/templates/public/stylesheets/re_view.css +131 -0
  178. data/rails_generators/templates/public/stylesheets/re_view_box.css +119 -0
  179. data/rails_generators/templates/public/stylesheets/{re_pipeline → re_view_box}/accept.png +0 -0
  180. data/rails_generators/templates/public/stylesheets/{re_pipeline → re_view_box}/exclamation.png +0 -0
  181. data/rails_generators/templates/public/stylesheets/re_view_box/shadowbox.jpg +0 -0
  182. data/rails_generators/templates/public/stylesheets/re_view_box/shadowbox.png +0 -0
  183. data/rails_generators/templates/public/stylesheets/re_view_box/whitebox.jpg +0 -0
  184. data/rails_generators/templates/public/stylesheets/re_view_button.css +118 -0
  185. data/rails_generators/templates/public/stylesheets/re_view_button/checked-off.gif +0 -0
  186. data/rails_generators/templates/public/stylesheets/re_view_button/checked-on.gif +0 -0
  187. data/rails_generators/templates/public/{images/re_rule_class/add-18.png → stylesheets/re_view_button/icon-add.png} +0 -0
  188. data/rails_generators/templates/public/{images/re_pipeline/destroy-18.png → stylesheets/re_view_button/icon-delete.png} +0 -0
  189. data/rails_generators/templates/public/stylesheets/re_view_button/oval-blue-left.gif +0 -0
  190. data/rails_generators/templates/public/stylesheets/re_view_button/oval-blue-right.gif +0 -0
  191. data/rails_generators/templates/public/stylesheets/re_view_button/oval-gray-left.gif +0 -0
  192. data/rails_generators/templates/public/stylesheets/re_view_button/oval-gray-right.gif +0 -0
  193. data/rails_generators/templates/public/stylesheets/re_view_button/oval-green-left.gif +0 -0
  194. data/rails_generators/templates/public/stylesheets/re_view_button/oval-green-right.gif +0 -0
  195. data/rails_generators/templates/public/stylesheets/re_view_button/oval-orange-left.gif +0 -0
  196. data/rails_generators/templates/public/stylesheets/re_view_button/oval-orange-right.gif +0 -0
  197. data/rails_generators/templates/public/stylesheets/re_view_button/oval-red-left.gif +0 -0
  198. data/rails_generators/templates/public/stylesheets/re_view_button/oval-red-right.gif +0 -0
  199. data/rails_generators/templates/public/stylesheets/re_view_error.css +60 -0
  200. data/rails_generators/templates/public/{images/re_job/error-18.png → stylesheets/re_view_error/re-alert-close.png} +0 -0
  201. data/rails_generators/templates/public/stylesheets/re_view_form.css +120 -0
  202. data/rails_generators/templates/public/stylesheets/re_view_navigate.css +46 -0
  203. data/rails_generators/templates/public/stylesheets/re_view_navigate/breadcrumb.png +0 -0
  204. data/rails_generators/templates/public/stylesheets/re_view_table.css +137 -0
  205. data/rails_generators/templates/public/stylesheets/rules_engine.css +520 -0
  206. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/error-14.png +0 -0
  207. data/rails_generators/templates/public/{images/re_pipeline/__destroy-18.png → stylesheets/rules_engine/re_job/error-18.png} +0 -0
  208. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/error-25.png +0 -0
  209. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/error-48.png +0 -0
  210. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/info-14.png +0 -0
  211. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/info-18.png +0 -0
  212. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/info-25.png +0 -0
  213. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/info-48.png +0 -0
  214. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/list-14.png +0 -0
  215. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/list-18.png +0 -0
  216. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/list-25.png +0 -0
  217. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/list-48.png +0 -0
  218. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/loadingAnimation.gif +0 -0
  219. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-disabled-14.png +0 -0
  220. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-disabled-18.png +0 -0
  221. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-disabled-25.png +0 -0
  222. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-disabled-48.png +0 -0
  223. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-enabled-14.png +0 -0
  224. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-enabled-18.png +0 -0
  225. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-enabled-25.png +0 -0
  226. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/next-enabled-48.png +0 -0
  227. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-disabled-14.png +0 -0
  228. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-disabled-18.png +0 -0
  229. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-disabled-25.png +0 -0
  230. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-disabled-48.png +0 -0
  231. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-enabled-14.png +0 -0
  232. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-enabled-18.png +0 -0
  233. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-enabled-25.png +0 -0
  234. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/prev-enabled-48.png +0 -0
  235. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/success-14.png +0 -0
  236. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/success-18.png +0 -0
  237. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/success-25.png +0 -0
  238. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_job/success-48.png +0 -0
  239. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/activate-14.png +0 -0
  240. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/activate-18.png +0 -0
  241. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/activate-25.png +0 -0
  242. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/activate-48.png +0 -0
  243. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/alert-14.png +0 -0
  244. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/alert-18.png +0 -0
  245. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/alert-25.png +0 -0
  246. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/alert-48.png +0 -0
  247. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/change-14.png +0 -0
  248. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/change-18.png +0 -0
  249. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/change-25.png +0 -0
  250. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/change-48.png +0 -0
  251. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/changed-14.png +0 -0
  252. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/changed-18.png +0 -0
  253. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/changed-25.png +0 -0
  254. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/changed-48.png +0 -0
  255. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/current-14.png +0 -0
  256. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/current-18.png +0 -0
  257. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/current-25.png +0 -0
  258. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/current-48.png +0 -0
  259. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/deactivate-14.png +0 -0
  260. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/deactivate-18.png +0 -0
  261. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/deactivate-25.png +0 -0
  262. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/deactivate-48.png +0 -0
  263. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/destroy-14.png +0 -0
  264. data/rails_generators/templates/public/{images/re_rule → stylesheets/rules_engine/re_pipeline}/destroy-18.png +0 -0
  265. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/destroy-25.png +0 -0
  266. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/destroy-48.png +0 -0
  267. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/draft-14.png +0 -0
  268. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/draft-18.png +0 -0
  269. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/draft-25.png +0 -0
  270. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/draft-48.png +0 -0
  271. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/edit-14.png +0 -0
  272. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/edit-18.png +0 -0
  273. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/edit-25.png +0 -0
  274. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/edit-48.png +0 -0
  275. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-14.png +0 -0
  276. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-18.png +0 -0
  277. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-25.png +0 -0
  278. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-48.png +0 -0
  279. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-down.png +0 -0
  280. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/list-right.png +0 -0
  281. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/new-14.png +0 -0
  282. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/new-18.png +0 -0
  283. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/new-25.png +0 -0
  284. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/new-48.png +0 -0
  285. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/revert-14.png +0 -0
  286. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/revert-18.png +0 -0
  287. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/revert-25.png +0 -0
  288. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/revert-48.png +0 -0
  289. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/show-14.png +0 -0
  290. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/show-18.png +0 -0
  291. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/show-25.png +0 -0
  292. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/show-48.png +0 -0
  293. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/verify-14.png +0 -0
  294. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/verify-18.png +0 -0
  295. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/verify-25.png +0 -0
  296. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_pipeline/verify-48.png +0 -0
  297. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/destroy-14.png +0 -0
  298. data/rails_generators/templates/public/stylesheets/rules_engine/re_rule/destroy-18.png +0 -0
  299. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/destroy-25.png +0 -0
  300. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/destroy-48.png +0 -0
  301. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/edit-14.png +0 -0
  302. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/edit-18.png +0 -0
  303. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/edit-25.png +0 -0
  304. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/edit-48.png +0 -0
  305. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-14.png +0 -0
  306. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-18.png +0 -0
  307. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-25.png +0 -0
  308. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-48.png +0 -0
  309. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-off-14.png +0 -0
  310. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-off-18.png +0 -0
  311. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-off-25.png +0 -0
  312. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-down-off-48.png +0 -0
  313. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-14.png +0 -0
  314. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-18.png +0 -0
  315. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-25.png +0 -0
  316. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-48.png +0 -0
  317. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-off-14.png +0 -0
  318. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-off-18.png +0 -0
  319. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-off-25.png +0 -0
  320. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/move-up-off-48.png +0 -0
  321. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-change-14.png +0 -0
  322. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-change-18.png +0 -0
  323. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-change-25.png +0 -0
  324. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-change-48.png +0 -0
  325. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-show-14.png +0 -0
  326. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-show-18.png +0 -0
  327. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-show-25.png +0 -0
  328. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/next-show-48.png +0 -0
  329. data/rails_generators/templates/public/{images/re_rule/goto-pipeline-14.png → stylesheets/rules_engine/re_rule/start-pipeline-14.png} +0 -0
  330. data/rails_generators/templates/public/{images/re_rule/goto-pipeline-18.png → stylesheets/rules_engine/re_rule/start-pipeline-18.png} +0 -0
  331. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-failure-14.png +0 -0
  332. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-failure-18.png +0 -0
  333. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-failure-25.png +0 -0
  334. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-failure-48.png +0 -0
  335. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-success-14.png +0 -0
  336. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-success-18.png +0 -0
  337. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-success-25.png +0 -0
  338. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/stop-success-48.png +0 -0
  339. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/valid-14.png +0 -0
  340. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/valid-18.png +0 -0
  341. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/valid-25.png +0 -0
  342. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/valid-48.png +0 -0
  343. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/verify-14.png +0 -0
  344. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/verify-18.png +0 -0
  345. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/verify-25.png +0 -0
  346. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule/verify-48.png +0 -0
  347. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/add-14.png +0 -0
  348. data/rails_generators/templates/public/stylesheets/rules_engine/re_rule_class/add-18.png +0 -0
  349. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/add-25.png +0 -0
  350. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/add-48.png +0 -0
  351. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/help-14.png +0 -0
  352. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/help-18.png +0 -0
  353. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/help-25.png +0 -0
  354. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/help-48.png +0 -0
  355. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/list-down.png +0 -0
  356. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/list-right.png +0 -0
  357. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/new-14.png +0 -0
  358. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/new-18.png +0 -0
  359. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/new-25.png +0 -0
  360. data/rails_generators/templates/public/{images → stylesheets/rules_engine}/re_rule_class/new-48.png +0 -0
  361. data/rails_generators/templates/spec/controllers/re_jobs_controller_spec.rb +50 -0
  362. data/rails_generators/templates/spec/controllers/re_pipeline_jobs_controller_spec.rb +37 -0
  363. data/rails_generators/templates/spec/controllers/re_pipelines_controller_spec.rb +423 -83
  364. data/rails_generators/templates/spec/controllers/re_rules_controller_spec.rb +390 -0
  365. data/rails_generators/templates/spec/helpers/re_pipeline_helper_spec.rb +29 -0
  366. data/rails_generators/templates/spec/lib/rules/complex_rule_spec.rb +336 -0
  367. data/rails_generators/templates/spec/lib/rules/simple_rule_spec.rb +168 -0
  368. data/rails_generators/templates/spec/models/re_job_audit_spec.rb +1 -2
  369. data/rails_generators/templates/spec/models/re_job_spec.rb +157 -1
  370. data/rails_generators/templates/spec/models/re_pipeline_activated_observer_spec.rb +28 -0
  371. data/rails_generators/templates/spec/models/re_pipeline_activated_spec.rb +65 -0
  372. data/rails_generators/templates/spec/models/re_pipeline_base_spec.rb +37 -30
  373. data/rails_generators/templates/spec/models/re_pipeline_spec.rb +33 -1
  374. data/rails_generators/templates/spec/models/re_rule_expected_outcome_spec.rb +73 -0
  375. data/rails_generators/templates/spec/models/re_rule_spec.rb +266 -68
  376. data/rails_generators/templates/spec/support/rules_engine_macros.rb +23 -0
  377. data/spec/railsenv/app/controllers/application_controller.rb +10 -0
  378. data/spec/railsenv/app/rules/mock_rule.rb +11 -0
  379. data/spec/railsenv/config/boot.rb +110 -0
  380. data/spec/railsenv/config/database.yml +22 -0
  381. data/spec/railsenv/config/environment.rb +41 -0
  382. data/spec/railsenv/config/environments/development.rb +17 -0
  383. data/spec/railsenv/config/environments/production.rb +28 -0
  384. data/spec/railsenv/config/environments/test.rb +28 -0
  385. data/spec/railsenv/config/initializers/backtrace_silencers.rb +7 -0
  386. data/spec/railsenv/config/initializers/inflections.rb +10 -0
  387. data/spec/railsenv/config/initializers/mime_types.rb +5 -0
  388. data/spec/railsenv/config/initializers/new_rails_defaults.rb +19 -0
  389. data/spec/railsenv/config/initializers/session_store.rb +15 -0
  390. data/spec/railsenv/config/locales/en.yml +5 -0
  391. data/spec/railsenv/config/routes.rb +43 -0
  392. data/spec/railsenv/db/test.sqlite3 +1 -0
  393. data/spec/railsenv/log/debug.log +1 -0
  394. data/spec/railsenv/log/test.log +1 -0
  395. data/spec/rcov.opts +3 -0
  396. data/spec/rules_engine/cache_spec.rb +18 -0
  397. data/spec/rules_engine/discovery_spec.rb +32 -0
  398. data/spec/rules_engine/job_spec.rb +266 -0
  399. data/spec/rules_engine/rule_spec.rb +76 -0
  400. data/spec/rules_engine_view/alerts_spec.rb +142 -0
  401. data/spec/rules_engine_view/boxes_spec.rb +33 -0
  402. data/spec/rules_engine_view/buttons_spec.rb +123 -0
  403. data/spec/rules_engine_view/defer_spec.rb +50 -0
  404. data/spec/rules_engine_view/form_builder_fields_spec.rb +161 -0
  405. data/spec/rules_engine_view/form_builder_spec.rb +17 -0
  406. data/spec/rules_engine_view/form_fields_spec.rb +180 -0
  407. data/spec/rules_engine_view/form_styles_spec.rb +254 -0
  408. data/spec/rules_engine_view/model_loader_spec.rb +177 -0
  409. data/spec/rules_engine_view/navigate_spec.rb +55 -0
  410. data/spec/spec.opts +4 -1
  411. data/spec/spec_helper.rb +16 -4
  412. metadata +374 -213
  413. data/README.rdoc +0 -17
  414. data/lib/rules_engine/job_runner.rb +0 -115
  415. data/rails_generators/USAGE +0 -68
  416. data/rails_generators/blacklist_word.yml +0 -6
  417. data/rails_generators/blacklist_word_manifest.rb +0 -26
  418. data/rails_generators/generator.yml +0 -58
  419. data/rails_generators/generator_manifest.rb +0 -282
  420. data/rails_generators/simple.yml +0 -6
  421. data/rails_generators/simple_manifest.rb +0 -21
  422. data/rails_generators/template_manifest.rb +0 -13
  423. data/rails_generators/templates/app/models/re_rule_outcome.rb +0 -40
  424. data/rails_generators/templates/app/rules/blacklist_word.rb +0 -89
  425. data/rails_generators/templates/app/rules/simple.rb +0 -44
  426. data/rails_generators/templates/app/rules/template.rb +0 -51
  427. data/rails_generators/templates/app/views/layouts/_blockUI.html.erb +0 -3
  428. data/rails_generators/templates/app/views/re_jobs/_index.html.erb +0 -66
  429. data/rails_generators/templates/app/views/re_pipeline_jobs/_empty.html.erb +0 -11
  430. data/rails_generators/templates/app/views/re_pipeline_jobs/_index.html.erb +0 -41
  431. data/rails_generators/templates/app/views/re_pipelines/_show_actions.html.erb +0 -3
  432. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_edit.html.erb +0 -7
  433. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_help.html.erb +0 -2
  434. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_new.html.erb +0 -7
  435. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_pipeline.html.erb +0 -18
  436. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_script.html.erb +0 -26
  437. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_title.html.erb +0 -6
  438. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_word.html.erb +0 -12
  439. data/rails_generators/templates/app/views/re_rule_definitions/blacklist_word/_words.html.erb +0 -16
  440. data/rails_generators/templates/app/views/re_rule_definitions/simple/_edit.html.erb +0 -6
  441. data/rails_generators/templates/app/views/re_rule_definitions/simple/_help.html.erb +0 -2
  442. data/rails_generators/templates/app/views/re_rule_definitions/simple/_new.html.erb +0 -6
  443. data/rails_generators/templates/app/views/re_rule_definitions/template/_edit.html.erb +0 -6
  444. data/rails_generators/templates/app/views/re_rule_definitions/template/_help.html.erb +0 -2
  445. data/rails_generators/templates/app/views/re_rule_definitions/template/_new.html.erb +0 -6
  446. data/rails_generators/templates/lib/tasks/re_runner.rake +0 -12
  447. data/rails_generators/templates/public/images/re_job/goto-16.png +0 -0
  448. data/rails_generators/templates/public/images/re_pipeline/__destroy-14.png +0 -0
  449. data/rails_generators/templates/public/images/re_pipeline/__destroy-25.png +0 -0
  450. data/rails_generators/templates/public/images/re_pipeline/__destroy-48.png +0 -0
  451. data/rails_generators/templates/public/images/re_rule/__destroy-14.png +0 -0
  452. data/rails_generators/templates/public/images/re_rule/__destroy-18.png +0 -0
  453. data/rails_generators/templates/public/images/re_rule/__destroy-25.png +0 -0
  454. data/rails_generators/templates/public/images/re_rule/__destroy-48.png +0 -0
  455. data/rails_generators/templates/public/javascripts/re_jobs.js +0 -59
  456. data/rails_generators/templates/public/javascripts/re_pipeline.js +0 -54
  457. data/rails_generators/templates/public/javascripts/re_pipeline_jobs.js +0 -61
  458. data/rails_generators/templates/public/stylesheets/re_pipeline.css +0 -509
  459. data/rails_generators/templates/spec/models/re_rule_outcome_spec.rb +0 -97
  460. data/rails_generators/templates/spec/support/blueprint_re_pipelines.rb +0 -11
  461. data/spec/rules_engine_spec.rb +0 -7
@@ -0,0 +1,30 @@
1
+ class ReRuleExpectedOutcome < ActiveRecord::Base
2
+ belongs_to :re_rule
3
+
4
+ validates_associated :re_rule
5
+ validates_presence_of :outcome
6
+ def validate
7
+ if outcome == RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE && pipeline_code.blank?
8
+ errors.add(:pipeline_code, "pipeline code required")
9
+ end
10
+ end
11
+
12
+ def copy! re_rule_expected_outcome
13
+ self.outcome = re_rule_expected_outcome.outcome
14
+ self.pipeline_code = re_rule_expected_outcome.pipeline_code
15
+ self
16
+ end
17
+
18
+ def equals? re_rule_expected_outcome
19
+ if outcome != re_rule_expected_outcome.outcome
20
+ return false
21
+ end
22
+
23
+ if outcome == RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE
24
+ return false unless pipeline_code == re_rule_expected_outcome.pipeline_code
25
+ #TODO check the pipeline equals the pipeline code
26
+ end
27
+
28
+ return true
29
+ end
30
+ end
@@ -0,0 +1,133 @@
1
+ class <%=rule_class%>Rule < RulesEngine::Rule
2
+
3
+ attr_reader :words
4
+ attr_reader :pipeline_action
5
+ attr_reader :pipeline
6
+
7
+ ##################################################################
8
+ # class options
9
+ self.options =
10
+ {
11
+ :group => '<%=rule_class%>',
12
+ :display_name => '<%=rule_class%>',
13
+ :help_partial => '/re_rule_definitions/<%=rule_name%>_rule/help',
14
+ :new_partial => '/re_rule_definitions/<%=rule_name%>_rule/new',
15
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>_rule/edit'
16
+ }
17
+
18
+ ##################################################################
19
+ # set the rule data
20
+ def data= data
21
+ if data.nil?
22
+ @title = nil
23
+ @words = nil
24
+ @pipeline_action = 'continue'
25
+ @pipeline = nil
26
+ else
27
+ @title, @words, @pipeline_action, @pipeline = ActiveSupport::JSON.decode(data)
28
+ end
29
+ end
30
+
31
+ ##################################################################
32
+ # get the rule attributes
33
+ def title
34
+ @title
35
+ end
36
+
37
+ def summary
38
+ "Match the #{words.size == 1 ? 'word' : 'words'} #{words.join(', ')}"
39
+ end
40
+
41
+ def data
42
+ [title, words, pipeline_action, pipeline].to_json
43
+ end
44
+
45
+ def expected_outcomes
46
+ case pipeline_action
47
+ when 'next'
48
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
49
+ when 'stop_success'
50
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS]
51
+ when 'stop_failure'
52
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE]
53
+ when 'start_pipeline'
54
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE, :pipeline_code => pipeline]
55
+ else
56
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
57
+ end
58
+ end
59
+
60
+ ##################################################################
61
+ # set the rule attributes
62
+ def attributes=(params)
63
+ param_hash = params.symbolize_keys
64
+
65
+ @title = param_hash[:<%=rule_name%>_title]
66
+
67
+ @words = []
68
+ return if param_hash[:<%=rule_name%>_words].nil?
69
+ param_hash[:<%=rule_name%>_words].each do |key, values|
70
+ if values.is_a?(Hash)
71
+ word_hash = values.symbolize_keys
72
+ @words << word_hash[:word].downcase unless word_hash[:word].blank? || word_hash[:_delete] == '1'
73
+ end
74
+ end
75
+
76
+ @pipeline_action = param_hash[:<%=rule_name%>_pipeline_action] || 'continue'
77
+ @pipeline = param_hash[:<%=rule_name%>_pipeline] || ''
78
+ end
79
+
80
+ ##################################################################
81
+ # validation and errors
82
+ def valid?
83
+ @errors = {}
84
+ @errors[:<%=rule_name%>_words] = "At least one word must be defined" if words.nil? || words.empty?
85
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
86
+ @errors[:<%=rule_name%>_pipeline] = "Pipeline required" if pipeline_action == 'start_pipeline' && pipeline.blank?
87
+ return @errors.empty?
88
+ end
89
+
90
+ ##################################################################
91
+ # callbacks when the rule is added and removed from a pipeline
92
+ def after_add_to_pipeline(re_pipeline_id, re_rule_id)
93
+ end
94
+
95
+ def before_remove_from_pipeline(re_pipeline_id, re_rule_id)
96
+ end
97
+
98
+ ##################################################################
99
+ # execute the rule
100
+ # if a match is found procees to the expected outcome
101
+ # it gets the data parameter :sentence
102
+ # it sets the data parameter :match
103
+ def process(job, data)
104
+ sentence = data[:sentence] || data["sentence"]
105
+ return nil if sentence.blank?
106
+
107
+ words.each do |word|
108
+ if /#{word}/i =~ sentence
109
+ job.audit("Match Found #{word}", ReJobAudit::AUDIT_INFO)
110
+ data[:match] = word
111
+
112
+ rule_outcome = RulesEngine::RuleOutcome.new
113
+
114
+ case pipeline_action
115
+ when 'stop_success'
116
+ rule_outcome.outcome = RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS
117
+ when 'stop_failure'
118
+ rule_outcome.outcome = RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE
119
+ when 'start_pipeline'
120
+ rule_outcome.outcome = RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE
121
+ rule_outcome.pipeline_code = pipeline
122
+ else #'next'
123
+ rule_outcome.outcome = RulesEngine::RuleOutcome::OUTCOME_NEXT
124
+ end
125
+
126
+ return rule_outcome
127
+ end
128
+ end
129
+
130
+ nil
131
+ end
132
+
133
+ end
@@ -0,0 +1,77 @@
1
+ class <%=rule_class%>Rule < RulesEngine::Rule
2
+
3
+ attr_reader :description
4
+ ##################################################################
5
+ # class options
6
+ self.options =
7
+ {
8
+ :group => '<%=rule_class%>',
9
+ :display_name => '<%=rule_class%>',
10
+ :help_partial => '/re_rule_definitions/<%=rule_name%>_rule/help',
11
+ :new_partial => '/re_rule_definitions/<%=rule_name%>_rule/new',
12
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>_rule/edit'
13
+ }
14
+
15
+ ##################################################################
16
+ # set the rule data
17
+ def data= data
18
+ if data.nil?
19
+ @title = nil
20
+ @description = nil
21
+ else
22
+ @title, @description = ActiveSupport::JSON.decode(data)
23
+ end
24
+ end
25
+
26
+ ##################################################################
27
+ # get the rule attributes
28
+ def title
29
+ @title
30
+ end
31
+
32
+ def summary
33
+ description
34
+ end
35
+
36
+ def data
37
+ [title, description].to_json
38
+ end
39
+
40
+ def expected_outcomes
41
+ [:outcome => RulesEngine::RuleOutcome::OUTCOME_NEXT]
42
+ end
43
+
44
+ ##################################################################
45
+ # set the rule attributes
46
+ def attributes=(params)
47
+ param_hash = params.symbolize_keys
48
+
49
+ @title = param_hash[:<%=rule_name%>_title]
50
+ @description = param_hash[:<%=rule_name%>_description]
51
+ end
52
+
53
+ ##################################################################
54
+ # validation and errors
55
+ def valid?
56
+ @errors = {}
57
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
58
+ @errors[:<%=rule_name%>_description] = "Description required" if description.blank?
59
+ return @errors.empty?
60
+ end
61
+
62
+ ##################################################################
63
+ # callbacks when the rule is added and removed from a pipeline
64
+ def after_add_to_pipeline(re_pipeline_id, re_rule_id)
65
+ end
66
+
67
+ def before_remove_from_pipeline(re_pipeline_id, re_rule_id)
68
+ end
69
+
70
+ ##################################################################
71
+ # execute the rule
72
+ # this rule does nothing
73
+ def process(job, data)
74
+ # job.audit("<%=rule_class%>", ReJobAudit::AUDIT_INFO)
75
+ return nil
76
+ end
77
+ end
@@ -0,0 +1,40 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5
+ <title> <%= (page_title = yield :defer_page_title) ? page_title : controller.controller_name.humanize %> </title>
6
+
7
+ <link rel="stylesheet" href="/stylesheets/blueprint/screen.css" type="text/css" media="screen, projection">
8
+ <link rel="stylesheet" href="/stylesheets/blueprint/print.css" type="text/css" media="print">
9
+ <!--[if lt IE 8]>
10
+ <link rel="stylesheet" href="/stylesheets/blueprint/ie.css" type="text/css" media="screen, projection">
11
+ <![endif]-->
12
+
13
+ <%= javascript_include_tag 'jquery-1.4.2.min', 'jquery.blockUI', 'jquery.autocomplete.pack', 'jquery.fancybox-1.3.1',
14
+ 're_view',
15
+ #'application',
16
+ :cache => true %>
17
+
18
+ <%= stylesheet_link_tag 're_view', 're_view_form', 're_view_button',
19
+ 're_view_error', 're_view_box', 're_view_navigate', 're_view_table',
20
+ 'rules_engine',
21
+ 'jquery.autocomplete', 'fancybox/jquery.fancybox-1.3.1',
22
+ #'application',
23
+ :cache => true %>
24
+
25
+ <%= yield :defer_re_javascript_include %>
26
+ </head>
27
+ <body>
28
+ <div class="container">
29
+ <%#= render :partial => '/layouts/header' %>
30
+
31
+ <%= yield :defer_re_breadcrumbs %>
32
+ <%= re_alert %>
33
+
34
+ <%= yield %>
35
+
36
+ <div class="clear top-10"></div>
37
+ <%#= render :partial => '/layouts/footer' %>
38
+ </div>
39
+ </body>
40
+ </html>
@@ -1,9 +1,12 @@
1
1
  <% local_hide = local_assigns[:hide] && hide %>
2
2
 
3
- <div id="job_list_empty" style="<%= local_hide ? 'display:none' : '' %>">
4
- <div class="redbox-header"><h4 class="white">No Jobs Created</h4></div>
5
- <div class="redbox no-top">
6
- <h4 class="left-5">Jobs are added when run.</h4>
3
+ <div id="re_job_list_empty" style="<%= local_hide ? 'display:none' : '' %>">
4
+ <!-- <div class="re-redbox-header"><h4 class="white">No jobs have been run</h4></div> -->
5
+ <div class="re-redbox">
6
+ <h4 class="left-5 red">
7
+ No Jobs have been run.
8
+ </h4>
9
+
7
10
  </div>
8
11
  <div class="clear"></div>
9
12
  </div>
@@ -0,0 +1,79 @@
1
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" class="data" id="re_job_table">
2
+ <tr>
3
+ <th class="" width="110px">
4
+ <span class="left-5">
5
+ Job Id
6
+ </span>
7
+ </th>
8
+ <th class="text-right" width="180px">
9
+ <span class="right-20">
10
+ Start Time
11
+ </span>
12
+ </th>
13
+ <th class="text-right" width="180px">
14
+ <span class="right-20">
15
+ Finish Time
16
+ </span>
17
+ </th>
18
+ <th>
19
+ <span class="left-5">
20
+ Data
21
+ </span>
22
+ </th>
23
+ </tr>
24
+ <% @re_jobs.each do | re_job | %>
25
+ <tr class="<%= cycle('', 'odd') %>">
26
+ <td>
27
+ <%
28
+ case re_job['job_status'].to_i
29
+ when ReJob::JOB_STATUS_NONE, ReJob::JOB_STATUS_RUNNING
30
+ job_class = 'job-running'
31
+ when ReJob::JOB_STATUS_SUCCESS
32
+ job_class = 're-job-success'
33
+ else
34
+ job_class = 're-job-error'
35
+ end
36
+ %>
37
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
38
+ <div class="<%= job_class %>">
39
+ <%= re_job['job_id'] %>
40
+ </div>
41
+ </a>
42
+ </td>
43
+ <td class="text-right">
44
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
45
+ <div>
46
+ <%= re_job['start_date'].strftime('%d %b %Y - %H:%M:%S') %>
47
+ </div>
48
+ </a>
49
+ </td>
50
+ <td class="text-right">
51
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
52
+ <div>
53
+ <%= re_job['end_date'] ? re_job['end_date'].strftime('%d %b %Y - %H:%M:%S') : '&nbsp;' %>
54
+ </div>
55
+ </a>
56
+ </td>
57
+ <td>
58
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
59
+ <div>
60
+ <span class="left-5">
61
+ <%= re_job['end_data'] || re_job['start_data'] %>
62
+ </span>
63
+ </div>
64
+ </a>
65
+ </td>
66
+ </tr>
67
+ <% end %>
68
+ <tr class="<%= cycle('', 'odd') %>">
69
+ <td colspan = "4">
70
+ <% if @re_pipeline.nil? %>
71
+ <a class="re-job-page-next-<%= @re_jobs.next_page ? 'enabled' : 'disabled' %>" href='<%= re_jobs_path(:page => (@re_jobs.next_page || '1')) %>'></a>
72
+ <a class="re-job-page-prev-<%= @re_jobs.previous_page ? 'enabled' : 'disabled' %>" href='<%= re_jobs_path(:page => (@re_jobs.previous_page || '1'))%>'></a>
73
+ <% else %>
74
+ <a class="re-job-page-next-<%= @re_jobs.next_page ? 'enabled' : 'disabled' %>" href='<%= re_pipeline_re_jobs_path(@re_pipeline, :page => (@re_jobs.next_page || '1')) %>'></a>
75
+ <a class="re-job-page-prev-<%= @re_jobs.previous_page ? 'enabled' : 'disabled' %>" href='<%= re_pipeline_re_jobs_path(@re_pipeline, :page => (@re_jobs.previous_page || '1'))%>'></a>
76
+ <% end %>
77
+ </td>
78
+ </tr>
79
+ </table>
@@ -0,0 +1,42 @@
1
+ <div class="right-10">
2
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" class="data" id="re_job_table">
3
+ <% @re_jobs.each do | re_job | %>
4
+ <tr class="<%= cycle('', 'odd') %>">
5
+ <td class="no-border-right">
6
+ <%
7
+ job_date = re_job['start_date']
8
+ case re_job['job_status'].to_i
9
+ when ReJob::JOB_STATUS_NONE, ReJob::JOB_STATUS_RUNNING
10
+ job_class = 'job-running'
11
+ when ReJob::JOB_STATUS_SUCCESS
12
+ job_class = 're-job-success'
13
+ else
14
+ job_class = 're-job-error'
15
+ end
16
+ %>
17
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
18
+ <div class="<%= job_class %>">
19
+ <%= re_job['job_id'] %>
20
+ </div>
21
+ </a>
22
+ </td>
23
+ <td class="no-border-left text-right">
24
+ <a class="re-job-detail" href='#<%= re_job['job_id'] %>'>
25
+ <div>
26
+ <%= job_date.strftime('%d %b %Y - %H:%M:%S') %>
27
+ </div>
28
+ </a>
29
+ </td>
30
+ </tr>
31
+ <% end %>
32
+
33
+ <tr class="<%= cycle('', 'odd') %>">
34
+ <td colspan = "2">
35
+ <a class="re-job-page-next-<%= @re_jobs.next_page ? 'enabled' : 'disabled' %>" href='#<%= @re_jobs.next_page || '1' %>'></a>
36
+ <a class="re-job-page-prev-<%= @re_jobs.previous_page ? 'enabled' : 'disabled' %>" href='#<%= @re_jobs.previous_page || '1' %>'></a>
37
+
38
+ </td>
39
+ </tr>
40
+ </table>
41
+
42
+ </div>
@@ -1,9 +1,9 @@
1
- <div class="job-show">
1
+ <div class="re-job-show span-18">
2
2
 
3
3
  <div class="float-left">
4
- <h3>
4
+ <h4>
5
5
  <span class="blue">Job Id :</span> <%= @re_job.id %>
6
- </h3>
6
+ </h4>
7
7
  </div>
8
8
  <div class="float-right">
9
9
  <h4>
@@ -11,15 +11,17 @@
11
11
  </h4>
12
12
  </div>
13
13
  <div class="clear"></div>
14
- <table width="100%" border="0" cellpadding="0" cellspacing="0" class="data" id="job_audit_table">
14
+ <table width="100%" border="0" cellpadding="0" cellspacing="0" class="data" id="re_job_audit_table">
15
15
  <% @re_job_audits.each do | re_job_audit | %>
16
16
  <tr class="<%= cycle('', 'odd') %>">
17
17
  <td width="150px">
18
18
  <%
19
- if re_job_audit.audit_success
20
- job_class = 'job-success'
19
+ if re_job_audit.audit_code == ReJobAudit::AUDIT_INFO
20
+ job_class = 're-job-info'
21
+ elsif re_job_audit.audit_code == ReJobAudit::AUDIT_FAILURE
22
+ job_class = 're-job-error'
21
23
  else
22
- job_class = 'job-error'
24
+ job_class = 're-job-success'
23
25
  end
24
26
  %>
25
27
  <div class="<%= job_class %>">
@@ -27,17 +29,10 @@
27
29
  </div>
28
30
  </td>
29
31
  <td>
30
- <%= re_job_audit.audit_data%>
32
+ <%= re_job_audit.audit_message%>
31
33
  </td>
32
- <td class = "text-right">
33
- <div class = "right-5">
34
- <% if re_job_audit.audit_code == ReJobAudit::AUDIT_PIPELINE_START %>
35
- <%= link_to(re_job_audit.re_pipeline.code, re_pipeline_path(re_job_audit.re_pipeline_id), :class => "job-goto") %>
36
- <% end %>
37
- </div>
38
- </td>
39
34
  </tr>
40
35
  <% end %>
41
-
42
36
  </table>
37
+ <%= re_button_link_red('Close', re_jobs_path, :id => "re_jobs_close") %>
43
38
  </div>