rules_engine 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -1,20 +1,5 @@
1
1
  module RePipelineHelper
2
2
 
3
- def javascript_alert_messages
4
- unless flash[:error].blank?
5
- flash.delete(:success)
6
- flash.delete(:notice)
7
- return "$.error_message('" + escape_javascript(flash.delete(:error)) + "');"
8
- end
9
- unless flash[:success].blank?
10
- flash.delete(:notice)
11
- return "$.success_message('" + escape_javascript(flash.delete(:success)) + "');"
12
- end
13
- unless flash[:notice].blank?
14
- return "$.notice_message('" + escape_javascript(flash.delete(:notice)) + "');"
15
- end
16
- end
17
-
18
3
  def re_pipeline_status re_pipeline
19
4
  case re_pipeline.changed_status
20
5
  when RePipelineBase::CHANGED_STATUS_DRAFT
@@ -3,120 +3,113 @@ class ReJob < ActiveRecord::Base
3
3
  JOB_STATUS_NONE = 0
4
4
  JOB_STATUS_RUNNING = 1
5
5
  JOB_STATUS_SUCCESS = 2
6
- JOB_STATUS_FAILED = 3
7
-
8
-
6
+ JOB_STATUS_FAILURE = 3
7
+
9
8
  has_many :re_job_audits
10
9
 
11
10
  validates_presence_of :job_status
12
-
13
-
14
- def self.find_jobs_by_pipeline re_pipeline_id, options = {}
11
+
12
+ def self.find_jobs options = {}
15
13
  sql_count = <<-END_OF_STRING
16
14
  SELECT COUNT(rej.id) AS total
17
15
  FROM re_jobs rej
18
- WHERE rej.id IN (
19
- SELECT rejas.re_job_id
20
- FROM re_job_audits rejas
21
- WHERE rejas.audit_code = #{ReJobAudit::AUDIT_PIPELINE_START}
22
- AND rejas.re_pipeline_id = #{re_pipeline_id}
23
- )
16
+ WHERE rej.job_status != #{ReJob::JOB_STATUS_NONE}
24
17
  END_OF_STRING
25
18
 
26
19
  total_entries = find_by_sql(sql_count).first.total
27
20
 
28
- paginate re_pipeline_id, options.reverse_merge(:finder => 'find_jobs_by_pipeline_paginate', :offset => 0, :limit => 20, :total_entries => total_entries)
21
+ paginate options.reverse_merge(:finder => 'find_jobs_paginate', :page => 0, :per_page => 20, :total_entries => total_entries)
29
22
  end
30
23
 
31
- def self.find_jobs_by_pipeline_paginate re_pipeline_id, options = {:offset=>0, :limit=>100}
24
+ def self.find_jobs_paginate options = {:offset=>0, :limit=>100}
32
25
  sql_select = <<-END_OF_STRING
33
26
  SELECT rej.id AS job_id,
34
27
  rej.job_status AS job_status,
35
- rej.created_at AS job_date
28
+ rej.created_at AS job_date
36
29
  FROM re_jobs rej
37
- WHERE rej.id IN (
38
- SELECT rejas.re_job_id
39
- FROM re_job_audits rejas
40
- WHERE rejas.audit_code = #{ReJobAudit::AUDIT_PIPELINE_START}
41
- AND rejas.re_pipeline_id = #{re_pipeline_id}
42
- )
43
- ORDER BY job_date DESC
30
+ WHERE rej.job_status != #{ReJob::JOB_STATUS_NONE}
31
+ ORDER BY job_id DESC
44
32
  END_OF_STRING
45
33
 
46
34
  query = add_limit!(sql_select, :offset => options[:offset], :limit=>options[:limit])
47
35
 
48
36
  ActiveRecord::Base.connection.select_all(query).map do | result |
49
-
50
- job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND audit_code = ? AND re_pipeline_id = ?", result['job_id'], ReJobAudit::AUDIT_PIPELINE_START, re_pipeline_id], :order => "audit_date ASC", :limit => 1).first
51
- result.merge!({
52
- 'start_date' => job_audit.audit_date,
53
- 'start_data' => job_audit.audit_data,
54
- 'start_success' => job_audit.audit_success
55
- })
56
-
57
- job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND audit_code = ? AND re_pipeline_id = ?", result['job_id'], ReJobAudit::AUDIT_PIPELINE_END, re_pipeline_id], :order => "audit_date ASC", :limit => 1).first
58
- if (job_audit)
37
+ job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ?", result['job_id']], :order => "audit_date ASC", :limit => 1).first
38
+ if job_audit
59
39
  result.merge!({
60
- 'end_date' => job_audit.audit_date,
61
- 'end_data' => job_audit.audit_data,
62
- 'end_success' => job_audit.audit_success
40
+ 'start_date' => job_audit.audit_date,
41
+ 'start_data' => job_audit.audit_message,
63
42
  })
43
+ end
44
+
45
+ if result['job_status'].to_i != ReJob::JOB_STATUS_RUNNING
46
+ job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ?", result['job_id']], :order => "audit_date DESC", :limit => 1).first
47
+ if job_audit
48
+ result.merge!({
49
+ 'end_date' => job_audit.audit_date,
50
+ 'end_data' => job_audit.audit_message,
51
+ })
52
+ end
64
53
  end
65
-
54
+
66
55
  result
67
56
  end
68
57
  end
69
-
70
- def self.find_jobs options = {}
58
+
59
+
60
+ def self.find_jobs_by_pipeline re_pipeline_id, options = {}
71
61
  sql_count = <<-END_OF_STRING
72
62
  SELECT COUNT(rej.id) AS total
73
63
  FROM re_jobs rej
74
- WHERE rej.id IN (
64
+ WHERE rej.job_status != #{ReJob::JOB_STATUS_NONE}
65
+ AND rej.id IN (
75
66
  SELECT rejas.re_job_id
76
67
  FROM re_job_audits rejas
77
- WHERE rejas.audit_code = #{ReJobAudit::AUDIT_PIPELINE_START}
78
- )
68
+ WHERE rejas.re_pipeline_id = #{re_pipeline_id}
69
+ )
79
70
  END_OF_STRING
80
71
 
81
72
  total_entries = find_by_sql(sql_count).first.total
82
73
 
83
- paginate options.reverse_merge(:finder => 'find_jobs_paginate', :page => 0, :per_page => 20, :total_entries => total_entries)
74
+ paginate re_pipeline_id, options.reverse_merge(:finder => 'find_jobs_by_pipeline_paginate', :offset => 0, :limit => 20, :total_entries => total_entries)
84
75
  end
85
76
 
86
- def self.find_jobs_paginate options = {:offset=>0, :limit=>100}
77
+ def self.find_jobs_by_pipeline_paginate re_pipeline_id, options = {:offset=>0, :limit=>100}
87
78
  sql_select = <<-END_OF_STRING
88
79
  SELECT rej.id AS job_id,
89
80
  rej.job_status AS job_status,
90
- rej.created_at AS job_date
81
+ rej.created_at AS job_date
91
82
  FROM re_jobs rej
92
- WHERE rej.id IN (
83
+ WHERE rej.job_status != #{ReJob::JOB_STATUS_NONE}
84
+ AND rej.id IN (
93
85
  SELECT rejas.re_job_id
94
- FROM re_job_audits rejas
95
- WHERE rejas.audit_code = #{ReJobAudit::AUDIT_PIPELINE_START}
86
+ FROM re_job_audits rejas
87
+ WHERE rejas.re_pipeline_id = #{re_pipeline_id}
96
88
  )
97
- ORDER BY job_date DESC
89
+ ORDER BY job_id DESC
98
90
  END_OF_STRING
99
91
 
100
92
  query = add_limit!(sql_select, :offset => options[:offset], :limit=>options[:limit])
101
93
 
102
94
  ActiveRecord::Base.connection.select_all(query).map do | result |
103
-
104
- job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND audit_code = ?", result['job_id'], ReJobAudit::AUDIT_PIPELINE_START], :order => "audit_date ASC", :limit => 1).first
105
- result.merge!({
106
- 'start_date' => job_audit.audit_date,
107
- 'start_data' => job_audit.audit_data,
108
- 'start_success' => job_audit.audit_success
109
- })
110
-
111
- job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND audit_code = ?", result['job_id'], ReJobAudit::AUDIT_PIPELINE_END], :order => "audit_date DESC", :limit => 1).first
112
- if (job_audit)
95
+
96
+ job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND re_pipeline_id = ?", result['job_id'], re_pipeline_id], :order => "audit_date ASC", :limit => 1).first
97
+ if job_audit
113
98
  result.merge!({
114
- 'end_date' => job_audit.audit_date,
115
- 'end_data' => job_audit.audit_data,
116
- 'end_success' => job_audit.audit_success
99
+ 'start_date' => job_audit.audit_date,
100
+ 'start_data' => job_audit.audit_message,
117
101
  })
118
- end
102
+ end
119
103
 
104
+ if result['job_status'].to_i != ReJob::JOB_STATUS_RUNNING
105
+ job_audit = ReJobAudit.find(:all, :conditions => ["re_job_id = ? AND re_pipeline_id = ?", result['job_id'], re_pipeline_id], :order => "audit_date DESC", :limit => 1).first
106
+ if job_audit
107
+ result.merge!({
108
+ 'end_date' => job_audit.audit_date,
109
+ 'end_data' => job_audit.audit_message,
110
+ })
111
+ end
112
+ end
120
113
  result
121
114
  end
122
115
  end
@@ -1,11 +1,8 @@
1
1
  class ReJobAudit < ActiveRecord::Base
2
2
 
3
- AUDIT_PIPELINE_START = 1
4
- AUDIT_PIPELINE_END = 2
5
- AUDIT_PIPELINE_INFO = 3
6
- AUDIT_RULE_START = 4
7
- AUDIT_RULE_END = 5
8
- AUDIT_RULE_INFO = 6
3
+ AUDIT_INFO = 0
4
+ AUDIT_SUCCESS = 1
5
+ AUDIT_FAILURE = 2
9
6
 
10
7
  belongs_to :re_job
11
8
  belongs_to :re_pipeline
@@ -13,7 +10,6 @@ class ReJobAudit < ActiveRecord::Base
13
10
 
14
11
  validates_presence_of :audit_date
15
12
  validates_presence_of :audit_code
16
- # validates_presence_of :audit_success
17
13
 
18
14
  named_scope :by_re_job_id, lambda {|re_job_id| {:conditions => ['re_job_id = ?', re_job_id]} }
19
15
  named_scope :order_date, lambda {|order| {:order => "audit_date #{order}"} }
@@ -5,8 +5,6 @@ class RePipeline < RePipelineBase
5
5
 
6
6
  has_many :re_job_audits
7
7
 
8
- # before_save :reset_activated_status, :reset_changed_status
9
-
10
8
  def activate!
11
9
  self.activated_re_pipeline ||= RePipelineActivated.new
12
10
  activated_re_pipeline.copy! self
@@ -20,7 +18,6 @@ class RePipeline < RePipelineBase
20
18
  def deactivate!
21
19
  self.activated_re_pipeline.destroy unless activated_re_pipeline.nil?
22
20
  self.activated_re_pipeline = nil
23
- self.activated_status = RePipelineBase::ACTIVATED_STATUS_DRAFT
24
21
  save
25
22
  end
26
23
 
@@ -41,29 +38,10 @@ class RePipeline < RePipelineBase
41
38
  def changed_status
42
39
  if self.activated_re_pipeline.nil?
43
40
  RePipelineBase::CHANGED_STATUS_DRAFT
44
- elsif !equals?(self.activated_re_pipeline)
41
+ elsif !self.equals?(self.activated_re_pipeline)
45
42
  RePipelineBase::CHANGED_STATUS_CHANGED
46
43
  else
47
44
  RePipelineBase::CHANGED_STATUS_CURRENT
48
45
  end
49
46
  end
50
-
51
- # private
52
- # def reset_activated_status
53
- # if self.activated_re_pipeline.nil?
54
- # self.activated_status = RePipelineBase::ACTIVATED_STATUS_DRAFT
55
- # else
56
- # self.activated_status = RePipelineBase::ACTIVATED_STATUS_ACTIVE
57
- # end
58
- # end
59
- #
60
- # def reset_changed_status
61
- # if self.activated_re_pipeline.nil?
62
- # self.changed_status = RePipelineBase::CHANGED_STATUS_DRAFT
63
- # elsif !equals?(self.activated_re_pipeline)
64
- # self.changed_status = RePipelineBase::CHANGED_STATUS_CHANGED
65
- # else
66
- # self.changed_status = RePipelineBase::CHANGED_STATUS_CURRENT
67
- # end
68
- # end
69
47
  end
@@ -4,6 +4,7 @@ class RePipelineActivated < RePipelineBase
4
4
  def self.find_by_code(code)
5
5
  return find_by_code_without_caching(code) unless RulesEngine::Cache.perform_caching?
6
6
 
7
+ code.gsub!(/[^a-zA-Z0-9]+/i, '_')
7
8
  re_pipeline = RulesEngine::Cache.cache_store.read("activated_pipeline_#{code}")
8
9
  if (re_pipeline.nil?)
9
10
  re_pipeline = find_by_code_without_caching(code)
@@ -20,6 +21,8 @@ class RePipelineActivated < RePipelineBase
20
21
 
21
22
  def self.reset_cache(code)
22
23
  return unless RulesEngine::Cache.perform_caching?
24
+
25
+ code.gsub!(/[^a-zA-Z0-9]+/i, '_')
23
26
  RulesEngine::Cache.cache_store.delete("activated_pipeline_#{code}")
24
27
  end
25
28
 
@@ -1,11 +1,11 @@
1
1
  class RePipelineActivatedObserver < ActiveRecord::Observer
2
2
 
3
- def after_update(record)
4
- RePipelineActivated.reset_cache(record.code)
5
- end
6
-
7
3
  def after_create(record)
8
4
  RePipelineActivated.reset_cache(record.code)
9
5
  end
10
6
 
7
+ def after_update(record)
8
+ RePipelineActivated.reset_cache(record.code)
9
+ end
10
+
11
11
  end
@@ -18,7 +18,7 @@ class RePipelineBase < ActiveRecord::Base
18
18
  named_scope :order_title, :order => 're_pipelines.title ASC'
19
19
 
20
20
  def code=(new_code)
21
- self[:code] = new_code.downcase if new_code && new_record?
21
+ self[:code] = new_code.downcase.gsub(/[^a-zA-Z0-9]+/i, '_') if new_code && new_record?
22
22
  end
23
23
 
24
24
  def copy! re_pipeline
@@ -50,12 +50,12 @@ class RePipelineBase < ActiveRecord::Base
50
50
  true
51
51
  end
52
52
 
53
- def verify
53
+ def pipeline_error
54
54
  return 'rules required' if re_rules.empty?
55
55
 
56
- re_rules.each do |rule|
57
- result = rule.verify
58
- return result unless result.blank?
56
+ re_rules.each do |re_rule|
57
+ error = re_rule.rule_error
58
+ return error unless error.blank?
59
59
  end
60
60
 
61
61
  nil
@@ -2,18 +2,26 @@ class ReRule < ActiveRecord::Base
2
2
  belongs_to :re_pipeline
3
3
  acts_as_list :scope => :re_pipeline
4
4
 
5
- has_many :re_rule_outcomes, :dependent => :destroy, :order => "outcome ASC"
5
+ has_many :re_rule_expected_outcomes, :dependent => :destroy, :order => "outcome ASC"
6
6
  has_many :re_job_audits
7
7
 
8
8
  validates_associated :re_pipeline
9
- validates_presence_of :title
10
- validates_presence_of :rule_class
11
- validates_presence_of :summary
12
- validates_presence_of :data_version
13
- validates_presence_of :data
9
+ validates_presence_of :rule_class_name
14
10
 
15
11
  default_scope :order => 're_rules.position ASC'
16
12
 
13
+ before_save :before_save_rule
14
+ after_create :after_create_rule
15
+ before_destroy :before_destroy_rule
16
+
17
+ def validate
18
+ if self.rule.nil?
19
+ errors.add("rule_class", "not found")
20
+ elsif !self.rule.valid?
21
+ errors.add(self.rule_class_name, "not valid")
22
+ end
23
+ end
24
+
17
25
  def copy! re_rule
18
26
  activated_attrs = re_rule.attributes
19
27
  ignore_attributes.each{|key| activated_attrs.delete(key)}
@@ -22,7 +30,7 @@ class ReRule < ActiveRecord::Base
22
30
  self[key] = value
23
31
  end
24
32
 
25
- self.re_rule_outcomes = re_rule.re_rule_outcomes.map { |rule_outcome| ReRuleOutcome.new.copy!(rule_outcome) }
33
+ self.re_rule_expected_outcomes = re_rule.re_rule_expected_outcomes.map { |rule_expected_outcome| ReRuleExpectedOutcome.new.copy!(rule_expected_outcome) }
26
34
 
27
35
  self
28
36
  end
@@ -35,39 +43,78 @@ class ReRule < ActiveRecord::Base
35
43
  return false unless self[key] == value
36
44
  end
37
45
 
38
- return false unless self.re_rule_outcomes.length == re_rule.re_rule_outcomes.length
39
- self.re_rule_outcomes.each_with_index do |rule_outcome, index|
40
- return false unless rule_outcome.equals?(re_rule.re_rule_outcomes[index])
46
+ return false unless self.re_rule_expected_outcomes.length == re_rule.re_rule_expected_outcomes.length
47
+ self.re_rule_expected_outcomes.each_with_index do |rule_expected_outcome, index|
48
+ return false unless rule_expected_outcome.equals?(re_rule.re_rule_expected_outcomes[index])
41
49
  end
42
50
 
43
51
  true
44
52
  end
45
53
 
46
- def verify
47
- return self.error unless self.error.blank?
54
+ def rule
55
+ return @rule unless @rule.nil?
56
+ rule_class = RulesEngine::Discovery.rule_class(self.rule_class_name)
57
+ return nil if rule_class.nil?
58
+ @rule = rule_class.new
59
+ @rule.data = self.data
60
+ @rule
61
+ end
62
+
63
+ def rule_attributes=params
64
+ raise 'rule class not found' if rule.nil?
65
+ rule.attributes = params
66
+ end
67
+
68
+ def before_save_rule
69
+ raise 'rule class not found' if rule.nil?
70
+ self.title = rule.title
71
+ self.summary = rule.summary
72
+ self.data = rule.data
73
+
74
+ self.re_rule_expected_outcomes = (rule.expected_outcomes).map { |expected_outcome| ReRuleExpectedOutcome.new(expected_outcome) }
75
+ end
76
+
77
+ def after_create_rule
78
+ # raise 'rule class not found' if rule.nil?
79
+ rule.after_add_to_pipeline(self.re_pipeline_id, self.id)
80
+ end
81
+
82
+ def before_destroy_rule
83
+ # raise 'rule class not found' if rule.nil?
84
+ rule.before_remove_from_pipeline(self.re_pipeline_id, self.id)
85
+ end
48
86
 
49
- self.re_rule_outcomes.each do |rule_outcome|
50
- result = rule_outcome.verify
51
- return result unless result.blank?
87
+ def rule_error
88
+ return "#{title} class #{rule_class_name} invalid" if rule.nil?
89
+ return "#{title} invalid" unless rule.valid?
90
+
91
+ re_rule_expected_outcomes.each do |re_rule_expected_outcome|
92
+ next if re_rule_expected_outcome.pipeline_code.blank?
93
+
94
+ re_pipeline_activated = RePipelineActivated.find_by_code(re_rule_expected_outcome.pipeline_code)
95
+ return "#{re_rule_expected_outcome.pipeline_code} not activated" if re_pipeline_activated.nil?
96
+
97
+ pipeline_error = re_pipeline_activated.pipeline_error
98
+ return "#{re_rule_expected_outcome.pipeline_code} invalid" unless re_pipeline_activated.pipeline_error.blank?
52
99
  end
53
100
 
54
101
  nil
55
102
  end
56
-
57
- def re_rule_outcome_next
58
- re_rule_outcomes.detect{ |re_rule_outcome| re_rule_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_NEXT }
103
+
104
+ def re_rule_expected_outcome_next
105
+ re_rule_expected_outcomes.detect{ |re_rule_expected_outcome| re_rule_expected_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_NEXT }
59
106
  end
60
107
 
61
- def re_rule_outcome_success
62
- re_rule_outcomes.detect{ |re_rule_outcome| re_rule_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS }
108
+ def re_rule_expected_outcome_success
109
+ re_rule_expected_outcomes.detect{ |re_rule_expected_outcome| re_rule_expected_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_STOP_SUCCESS }
63
110
  end
64
111
 
65
- def re_rule_outcome_failure
66
- re_rule_outcomes.detect{ |re_rule_outcome| re_rule_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE }
112
+ def re_rule_expected_outcome_failure
113
+ re_rule_expected_outcomes.detect{ |re_rule_expected_outcome| re_rule_expected_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_STOP_FAILURE }
67
114
  end
68
115
 
69
- def re_rule_outcomes_start_pipeline
70
- re_rule_outcomes.select{ |re_rule_outcome| re_rule_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE }
116
+ def re_rule_expected_outcomes_start_pipeline
117
+ re_rule_expected_outcomes.select{ |re_rule_expected_outcome| re_rule_expected_outcome.outcome == RulesEngine::RuleOutcome::OUTCOME_START_PIPELINE }
71
118
  end
72
119
 
73
120
  protected