tasker-engine 1.0.0

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 (605) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +443 -0
  4. data/Rakefile +10 -0
  5. data/app/controllers/tasker/analytics_controller.rb +179 -0
  6. data/app/controllers/tasker/application_controller.rb +45 -0
  7. data/app/controllers/tasker/graphql_controller.rb +193 -0
  8. data/app/controllers/tasker/handlers_controller.rb +217 -0
  9. data/app/controllers/tasker/health_controller.rb +229 -0
  10. data/app/controllers/tasker/metrics_controller.rb +111 -0
  11. data/app/controllers/tasker/page_sort.rb +97 -0
  12. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  13. data/app/controllers/tasker/tasks_controller.rb +123 -0
  14. data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
  15. data/app/graphql/examples/all_tasks.graphql +22 -0
  16. data/app/graphql/examples/pending_tasks.graphql +23 -0
  17. data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
  18. data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
  19. data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
  20. data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
  21. data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
  22. data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
  23. data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
  24. data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
  25. data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
  26. data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
  27. data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
  28. data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
  29. data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
  30. data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
  31. data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
  32. data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
  33. data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
  34. data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
  35. data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
  36. data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
  37. data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
  38. data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
  39. data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
  40. data/app/graphql/tasker/graph_ql_types.rb +42 -0
  41. data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
  42. data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
  43. data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
  44. data/app/graphql/tasker/mutations/create_task.rb +52 -0
  45. data/app/graphql/tasker/mutations/update_step.rb +36 -0
  46. data/app/graphql/tasker/mutations/update_task.rb +41 -0
  47. data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
  48. data/app/graphql/tasker/queries/all_tasks.rb +23 -0
  49. data/app/graphql/tasker/queries/base_query.rb +9 -0
  50. data/app/graphql/tasker/queries/helpers.rb +16 -0
  51. data/app/graphql/tasker/queries/one_step.rb +24 -0
  52. data/app/graphql/tasker/queries/one_task.rb +18 -0
  53. data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
  54. data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
  55. data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
  56. data/app/jobs/tasker/application_job.rb +8 -0
  57. data/app/jobs/tasker/metrics_export_job.rb +252 -0
  58. data/app/jobs/tasker/task_runner_job.rb +224 -0
  59. data/app/models/tasker/annotation_type.rb +26 -0
  60. data/app/models/tasker/application_record.rb +70 -0
  61. data/app/models/tasker/dependent_system.rb +26 -0
  62. data/app/models/tasker/dependent_system_object_map.rb +64 -0
  63. data/app/models/tasker/diagram/edge.rb +106 -0
  64. data/app/models/tasker/diagram/flowchart.rb +137 -0
  65. data/app/models/tasker/diagram/node.rb +99 -0
  66. data/app/models/tasker/named_step.rb +41 -0
  67. data/app/models/tasker/named_task.rb +121 -0
  68. data/app/models/tasker/named_tasks_named_step.rb +82 -0
  69. data/app/models/tasker/step_dag_relationship.rb +65 -0
  70. data/app/models/tasker/step_readiness_status.rb +59 -0
  71. data/app/models/tasker/task.rb +424 -0
  72. data/app/models/tasker/task_annotation.rb +36 -0
  73. data/app/models/tasker/task_diagram.rb +332 -0
  74. data/app/models/tasker/task_execution_context.rb +29 -0
  75. data/app/models/tasker/task_namespace.rb +41 -0
  76. data/app/models/tasker/task_transition.rb +235 -0
  77. data/app/models/tasker/workflow_step.rb +461 -0
  78. data/app/models/tasker/workflow_step_edge.rb +94 -0
  79. data/app/models/tasker/workflow_step_transition.rb +434 -0
  80. data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
  81. data/app/serializers/tasker/handler_serializer.rb +109 -0
  82. data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
  83. data/app/serializers/tasker/task_serializer.rb +168 -0
  84. data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
  85. data/app/services/tasker/analytics_service.rb +409 -0
  86. data/app/views/tasker/task/_diagram.html.erb +32 -0
  87. data/config/initializers/dry_struct.rb +11 -0
  88. data/config/initializers/statesman.rb +6 -0
  89. data/config/initializers/tasker_orchestration.rb +17 -0
  90. data/config/initializers/time_formats.rb +4 -0
  91. data/config/routes.rb +34 -0
  92. data/config/tasker/subscriptions/example_integrations.yml +67 -0
  93. data/config/tasker/system_events.yml +305 -0
  94. data/db/functions/calculate_dependency_levels_v01.sql +45 -0
  95. data/db/functions/get_analytics_metrics_v01.sql +137 -0
  96. data/db/functions/get_slowest_steps_v01.sql +82 -0
  97. data/db/functions/get_slowest_tasks_v01.sql +96 -0
  98. data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
  99. data/db/functions/get_step_readiness_status_v01.sql +139 -0
  100. data/db/functions/get_system_health_counts_v01.sql +108 -0
  101. data/db/functions/get_task_execution_context_v01.sql +108 -0
  102. data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
  103. data/db/init/schema.sql +2277 -0
  104. data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
  105. data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
  106. data/docs/APPLICATION_GENERATOR.md +384 -0
  107. data/docs/AUTH.md +1780 -0
  108. data/docs/CIRCUIT_BREAKER.md +224 -0
  109. data/docs/DEVELOPER_GUIDE.md +2665 -0
  110. data/docs/EVENT_SYSTEM.md +637 -0
  111. data/docs/EXECUTION_CONFIGURATION.md +341 -0
  112. data/docs/FLOW_CHART.md +149 -0
  113. data/docs/HEALTH.md +542 -0
  114. data/docs/METRICS.md +731 -0
  115. data/docs/OPTIMIZATION_PLAN.md +1479 -0
  116. data/docs/OVERVIEW.md +552 -0
  117. data/docs/QUICK_START.md +270 -0
  118. data/docs/REGISTRY_SYSTEMS.md +373 -0
  119. data/docs/REST_API.md +632 -0
  120. data/docs/ROADMAP.md +221 -0
  121. data/docs/SQL_FUNCTIONS.md +1408 -0
  122. data/docs/TASK_DIAGRAM.md +252 -0
  123. data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
  124. data/docs/TELEMETRY.md +795 -0
  125. data/docs/TROUBLESHOOTING.md +756 -0
  126. data/docs/TaskHandlerGenerator.html +255 -0
  127. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
  128. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
  129. data/docs/Tasker/Analysis.html +117 -0
  130. data/docs/Tasker/AnalyticsController.html +450 -0
  131. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
  132. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
  133. data/docs/Tasker/AnalyticsService.html +2221 -0
  134. data/docs/Tasker/AnnotationType.html +137 -0
  135. data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
  136. data/docs/Tasker/ApplicationController.html +147 -0
  137. data/docs/Tasker/ApplicationJob.html +128 -0
  138. data/docs/Tasker/ApplicationRecord.html +378 -0
  139. data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
  140. data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
  141. data/docs/Tasker/Authentication/Coordinator.html +242 -0
  142. data/docs/Tasker/Authentication/Interface.html +560 -0
  143. data/docs/Tasker/Authentication/InterfaceError.html +124 -0
  144. data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
  145. data/docs/Tasker/Authentication.html +119 -0
  146. data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
  147. data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
  148. data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
  149. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
  150. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
  151. data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
  152. data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
  153. data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
  154. data/docs/Tasker/Authorization.html +582 -0
  155. data/docs/Tasker/CacheCapabilities.html +167 -0
  156. data/docs/Tasker/CacheStrategy.html +1297 -0
  157. data/docs/Tasker/Concerns/Authenticatable.html +116 -0
  158. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
  159. data/docs/Tasker/Concerns/Authorizable.html +816 -0
  160. data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
  161. data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
  162. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
  163. data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
  164. data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
  165. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
  166. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
  167. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
  168. data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
  169. data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
  170. data/docs/Tasker/Concerns.html +117 -0
  171. data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
  172. data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
  173. data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
  174. data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
  175. data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
  176. data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
  177. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
  178. data/docs/Tasker/Configuration.html +1669 -0
  179. data/docs/Tasker/ConfigurationError.html +143 -0
  180. data/docs/Tasker/ConfiguredTask.html +514 -0
  181. data/docs/Tasker/Constants/EventDefinitions.html +590 -0
  182. data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
  183. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
  184. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
  185. data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
  186. data/docs/Tasker/Constants/RegistryEvents.html +285 -0
  187. data/docs/Tasker/Constants/StepEvents.html +177 -0
  188. data/docs/Tasker/Constants/TaskEvents.html +167 -0
  189. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
  190. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
  191. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
  192. data/docs/Tasker/Constants/TaskExecution.html +126 -0
  193. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
  194. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
  195. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
  196. data/docs/Tasker/Constants/TaskFinalization.html +126 -0
  197. data/docs/Tasker/Constants/TaskStatuses.html +223 -0
  198. data/docs/Tasker/Constants/TestEvents.html +163 -0
  199. data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
  200. data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
  201. data/docs/Tasker/Constants.html +561 -0
  202. data/docs/Tasker/DependentSystem.html +137 -0
  203. data/docs/Tasker/DependentSystemObjectMap.html +250 -0
  204. data/docs/Tasker/DetectorRegistry.html +598 -0
  205. data/docs/Tasker/Diagram/Edge.html +1191 -0
  206. data/docs/Tasker/Diagram/Flowchart.html +1539 -0
  207. data/docs/Tasker/Diagram/Node.html +1165 -0
  208. data/docs/Tasker/Diagram.html +117 -0
  209. data/docs/Tasker/Engine.html +215 -0
  210. data/docs/Tasker/Error.html +139 -0
  211. data/docs/Tasker/Events/Bus.html +1226 -0
  212. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
  213. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
  214. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
  215. data/docs/Tasker/Events/Catalog.html +1291 -0
  216. data/docs/Tasker/Events/CustomRegistry.html +943 -0
  217. data/docs/Tasker/Events/DefinitionLoader.html +575 -0
  218. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
  219. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
  220. data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
  221. data/docs/Tasker/Events/Publisher.html +365 -0
  222. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
  223. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
  224. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
  225. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
  226. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
  227. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
  228. data/docs/Tasker/Events/Subscribers.html +117 -0
  229. data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
  230. data/docs/Tasker/Events.html +294 -0
  231. data/docs/Tasker/EventsGenerator.html +459 -0
  232. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
  233. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
  234. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
  235. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
  236. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
  237. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
  238. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
  239. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
  240. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
  241. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
  242. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
  243. data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
  244. data/docs/Tasker/Functions.html +117 -0
  245. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
  246. data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
  247. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
  248. data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
  249. data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
  250. data/docs/Tasker/Generators.html +117 -0
  251. data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
  252. data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
  253. data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
  254. data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
  255. data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
  256. data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
  257. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
  258. data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
  259. data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
  260. data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
  261. data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
  262. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
  263. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
  264. data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
  265. data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
  266. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
  267. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
  268. data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
  269. data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
  270. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
  271. data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
  272. data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
  273. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
  274. data/docs/Tasker/GraphQLTypes.html +130 -0
  275. data/docs/Tasker/GraphqlController.html +251 -0
  276. data/docs/Tasker/HandlerFactory.html +1518 -0
  277. data/docs/Tasker/HandlerSerializer.html +682 -0
  278. data/docs/Tasker/HandlersController.html +574 -0
  279. data/docs/Tasker/HashIdentityStrategy.html +278 -0
  280. data/docs/Tasker/Health/ReadinessChecker.html +712 -0
  281. data/docs/Tasker/Health/StatusChecker.html +653 -0
  282. data/docs/Tasker/Health.html +117 -0
  283. data/docs/Tasker/HealthController.html +523 -0
  284. data/docs/Tasker/IdentityStrategy.html +276 -0
  285. data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
  286. data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
  287. data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
  288. data/docs/Tasker/LifecycleEvents/Events.html +204 -0
  289. data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
  290. data/docs/Tasker/LifecycleEvents.html +799 -0
  291. data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
  292. data/docs/Tasker/Logging.html +115 -0
  293. data/docs/Tasker/MetricsController.html +293 -0
  294. data/docs/Tasker/MetricsExportJob.html +414 -0
  295. data/docs/Tasker/Mutations/BaseMutation.html +128 -0
  296. data/docs/Tasker/Mutations/CancelStep.html +219 -0
  297. data/docs/Tasker/Mutations/CancelTask.html +221 -0
  298. data/docs/Tasker/Mutations/CreateTask.html +243 -0
  299. data/docs/Tasker/Mutations/UpdateStep.html +243 -0
  300. data/docs/Tasker/Mutations/UpdateTask.html +243 -0
  301. data/docs/Tasker/Mutations.html +117 -0
  302. data/docs/Tasker/NamedStep.html +216 -0
  303. data/docs/Tasker/NamedTask.html +910 -0
  304. data/docs/Tasker/NamedTasksNamedStep.html +435 -0
  305. data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
  306. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
  307. data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
  308. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
  309. data/docs/Tasker/Orchestration/Coordinator.html +641 -0
  310. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
  311. data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
  312. data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
  313. data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
  314. data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
  315. data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
  316. data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
  317. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
  318. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
  319. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
  320. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
  321. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
  322. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
  323. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
  324. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
  325. data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
  326. data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
  327. data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
  328. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
  329. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
  330. data/docs/Tasker/Orchestration.html +130 -0
  331. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
  332. data/docs/Tasker/PageSort.html +247 -0
  333. data/docs/Tasker/PermanentError.html +518 -0
  334. data/docs/Tasker/ProceduralError.html +147 -0
  335. data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
  336. data/docs/Tasker/Queries/AllTasks.html +221 -0
  337. data/docs/Tasker/Queries/BaseQuery.html +128 -0
  338. data/docs/Tasker/Queries/Helpers.html +187 -0
  339. data/docs/Tasker/Queries/OneStep.html +225 -0
  340. data/docs/Tasker/Queries/OneTask.html +217 -0
  341. data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
  342. data/docs/Tasker/Queries/TasksByStatus.html +233 -0
  343. data/docs/Tasker/Queries.html +119 -0
  344. data/docs/Tasker/Railtie.html +124 -0
  345. data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
  346. data/docs/Tasker/Registry/EventPublisher.html +667 -0
  347. data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
  348. data/docs/Tasker/Registry/RegistrationError.html +132 -0
  349. data/docs/Tasker/Registry/RegistryError.html +139 -0
  350. data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
  351. data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
  352. data/docs/Tasker/Registry/ValidationError.html +132 -0
  353. data/docs/Tasker/Registry.html +119 -0
  354. data/docs/Tasker/RetryableError.html +515 -0
  355. data/docs/Tasker/StateMachine/Compatibility.html +282 -0
  356. data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
  357. data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
  358. data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
  359. data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
  360. data/docs/Tasker/StateMachine.html +602 -0
  361. data/docs/Tasker/StepDagRelationship.html +657 -0
  362. data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
  363. data/docs/Tasker/StepHandler/Api.html +884 -0
  364. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
  365. data/docs/Tasker/StepHandler/Base.html +970 -0
  366. data/docs/Tasker/StepHandler.html +119 -0
  367. data/docs/Tasker/StepReadinessStatus.html +836 -0
  368. data/docs/Tasker/Task.html +2575 -0
  369. data/docs/Tasker/TaskAnnotation.html +137 -0
  370. data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
  371. data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
  372. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
  373. data/docs/Tasker/TaskBuilder.html +764 -0
  374. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
  375. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
  376. data/docs/Tasker/TaskDiagram.html +548 -0
  377. data/docs/Tasker/TaskDiagramsController.html +240 -0
  378. data/docs/Tasker/TaskExecutionContext.html +469 -0
  379. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
  380. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
  381. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
  382. data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
  383. data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
  384. data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
  385. data/docs/Tasker/TaskHandler.html +271 -0
  386. data/docs/Tasker/TaskNamespace.html +312 -0
  387. data/docs/Tasker/TaskRunnerJob.html +406 -0
  388. data/docs/Tasker/TaskSerializer.html +474 -0
  389. data/docs/Tasker/TaskTransition.html +1517 -0
  390. data/docs/Tasker/TaskWorkflowSummary.html +988 -0
  391. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
  392. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
  393. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
  394. data/docs/Tasker/TaskerRailsSchema.html +384 -0
  395. data/docs/Tasker/TasksController.html +595 -0
  396. data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
  397. data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
  398. data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
  399. data/docs/Tasker/Telemetry/Events.html +115 -0
  400. data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
  401. data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
  402. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
  403. data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
  404. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
  405. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
  406. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
  407. data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
  408. data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
  409. data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
  410. data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
  411. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
  412. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
  413. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
  414. data/docs/Tasker/Telemetry/Plugins.html +117 -0
  415. data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
  416. data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
  417. data/docs/Tasker/Telemetry.html +130 -0
  418. data/docs/Tasker/Types/AuthConfig.html +886 -0
  419. data/docs/Tasker/Types/BackoffConfig.html +1063 -0
  420. data/docs/Tasker/Types/BaseConfig.html +227 -0
  421. data/docs/Tasker/Types/CacheConfig.html +1731 -0
  422. data/docs/Tasker/Types/DatabaseConfig.html +388 -0
  423. data/docs/Tasker/Types/DependencyGraph.html +526 -0
  424. data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
  425. data/docs/Tasker/Types/EngineConfig.html +1181 -0
  426. data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
  427. data/docs/Tasker/Types/GraphEdge.html +517 -0
  428. data/docs/Tasker/Types/GraphMetadata.html +781 -0
  429. data/docs/Tasker/Types/GraphNode.html +694 -0
  430. data/docs/Tasker/Types/HealthConfig.html +784 -0
  431. data/docs/Tasker/Types/StepSequence.html +353 -0
  432. data/docs/Tasker/Types/StepTemplate.html +1193 -0
  433. data/docs/Tasker/Types/TaskRequest.html +1179 -0
  434. data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
  435. data/docs/Tasker/Types.html +154 -0
  436. data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
  437. data/docs/Tasker/WorkflowStep.html +2724 -0
  438. data/docs/Tasker/WorkflowStepEdge.html +304 -0
  439. data/docs/Tasker/WorkflowStepSerializer.html +305 -0
  440. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
  441. data/docs/Tasker/WorkflowStepTransition.html +2201 -0
  442. data/docs/Tasker/WorkflowStepsController.html +462 -0
  443. data/docs/Tasker.html +452 -0
  444. data/docs/VISION.md +584 -0
  445. data/docs/WHY.md +21 -0
  446. data/docs/_index.html +2375 -0
  447. data/docs/class_list.html +54 -0
  448. data/docs/css/common.css +1 -0
  449. data/docs/css/full_list.css +58 -0
  450. data/docs/css/style.css +503 -0
  451. data/docs/events/migration_plan_outcomes.md +80 -0
  452. data/docs/file.README.html +541 -0
  453. data/docs/file_list.html +59 -0
  454. data/docs/frames.html +22 -0
  455. data/docs/index.html +541 -0
  456. data/docs/js/app.js +344 -0
  457. data/docs/js/full_list.js +242 -0
  458. data/docs/js/jquery.js +4 -0
  459. data/docs/method_list.html +9182 -0
  460. data/docs/top-level-namespace.html +110 -0
  461. data/lib/generators/tasker/authenticator_generator.rb +301 -0
  462. data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
  463. data/lib/generators/tasker/events_generator.rb +91 -0
  464. data/lib/generators/tasker/subscriber_generator.rb +107 -0
  465. data/lib/generators/tasker/task_handler_generator.rb +138 -0
  466. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
  467. data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
  468. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
  469. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
  470. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
  471. data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
  472. data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
  473. data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
  474. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
  475. data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
  476. data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
  477. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
  478. data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
  479. data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
  480. data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
  481. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
  482. data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
  483. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
  484. data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
  485. data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
  486. data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
  487. data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
  488. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
  489. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
  490. data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
  491. data/lib/tasker/authentication/coordinator.rb +78 -0
  492. data/lib/tasker/authentication/errors.rb +9 -0
  493. data/lib/tasker/authentication/interface.rb +36 -0
  494. data/lib/tasker/authentication/none_authenticator.rb +26 -0
  495. data/lib/tasker/authorization/base_coordinator.rb +112 -0
  496. data/lib/tasker/authorization/errors.rb +26 -0
  497. data/lib/tasker/authorization/resource_constants.rb +74 -0
  498. data/lib/tasker/authorization/resource_registry.rb +143 -0
  499. data/lib/tasker/authorization.rb +75 -0
  500. data/lib/tasker/cache_capabilities.rb +131 -0
  501. data/lib/tasker/cache_strategy.rb +469 -0
  502. data/lib/tasker/concerns/authenticatable.rb +41 -0
  503. data/lib/tasker/concerns/authorizable.rb +204 -0
  504. data/lib/tasker/concerns/controller_authorizable.rb +124 -0
  505. data/lib/tasker/concerns/event_publisher.rb +716 -0
  506. data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
  507. data/lib/tasker/concerns/state_machine_base.rb +218 -0
  508. data/lib/tasker/concerns/structured_logging.rb +387 -0
  509. data/lib/tasker/configuration.rb +325 -0
  510. data/lib/tasker/constants/event_definitions.rb +147 -0
  511. data/lib/tasker/constants/registry_events.rb +54 -0
  512. data/lib/tasker/constants.rb +417 -0
  513. data/lib/tasker/engine.rb +90 -0
  514. data/lib/tasker/errors.rb +90 -0
  515. data/lib/tasker/events/catalog.rb +432 -0
  516. data/lib/tasker/events/custom_registry.rb +175 -0
  517. data/lib/tasker/events/definition_loader.rb +199 -0
  518. data/lib/tasker/events/event_payload_builder.rb +461 -0
  519. data/lib/tasker/events/publisher.rb +149 -0
  520. data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
  521. data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
  522. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
  523. data/lib/tasker/events/subscription_loader.rb +161 -0
  524. data/lib/tasker/events.rb +37 -0
  525. data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
  526. data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
  527. data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
  528. data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
  529. data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
  530. data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
  531. data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
  532. data/lib/tasker/functions/function_wrapper.rb +42 -0
  533. data/lib/tasker/functions.rb +12 -0
  534. data/lib/tasker/handler_factory.rb +322 -0
  535. data/lib/tasker/health/readiness_checker.rb +186 -0
  536. data/lib/tasker/health/status_checker.rb +203 -0
  537. data/lib/tasker/identity_strategy.rb +38 -0
  538. data/lib/tasker/logging/correlation_id_generator.rb +120 -0
  539. data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
  540. data/lib/tasker/orchestration/connection_builder.rb +122 -0
  541. data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
  542. data/lib/tasker/orchestration/coordinator.rb +119 -0
  543. data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
  544. data/lib/tasker/orchestration/plugin_integration.rb +124 -0
  545. data/lib/tasker/orchestration/response_processor.rb +168 -0
  546. data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
  547. data/lib/tasker/orchestration/step_executor.rb +941 -0
  548. data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
  549. data/lib/tasker/orchestration/task_finalizer.rb +564 -0
  550. data/lib/tasker/orchestration/task_initializer.rb +140 -0
  551. data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
  552. data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
  553. data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
  554. data/lib/tasker/orchestration.rb +45 -0
  555. data/lib/tasker/railtie.rb +9 -0
  556. data/lib/tasker/registry/base_registry.rb +177 -0
  557. data/lib/tasker/registry/event_publisher.rb +91 -0
  558. data/lib/tasker/registry/interface_validator.rb +140 -0
  559. data/lib/tasker/registry/statistics_collector.rb +381 -0
  560. data/lib/tasker/registry/subscriber_registry.rb +285 -0
  561. data/lib/tasker/registry.rb +22 -0
  562. data/lib/tasker/state_machine/step_state_machine.rb +508 -0
  563. data/lib/tasker/state_machine/task_state_machine.rb +192 -0
  564. data/lib/tasker/state_machine.rb +83 -0
  565. data/lib/tasker/step_handler/api.rb +410 -0
  566. data/lib/tasker/step_handler/base.rb +206 -0
  567. data/lib/tasker/task_builder.rb +432 -0
  568. data/lib/tasker/task_handler/class_methods.rb +324 -0
  569. data/lib/tasker/task_handler/instance_methods.rb +293 -0
  570. data/lib/tasker/task_handler/step_group.rb +182 -0
  571. data/lib/tasker/task_handler.rb +43 -0
  572. data/lib/tasker/telemetry/event_mapping.rb +126 -0
  573. data/lib/tasker/telemetry/event_router.rb +318 -0
  574. data/lib/tasker/telemetry/events/export_events.rb +38 -0
  575. data/lib/tasker/telemetry/export_coordinator.rb +497 -0
  576. data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
  577. data/lib/tasker/telemetry/log_backend.rb +224 -0
  578. data/lib/tasker/telemetry/metric_types.rb +368 -0
  579. data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
  580. data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
  581. data/lib/tasker/telemetry/plugin_registry.rb +333 -0
  582. data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
  583. data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
  584. data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
  585. data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
  586. data/lib/tasker/telemetry/trace_backend.rb +186 -0
  587. data/lib/tasker/telemetry.rb +59 -0
  588. data/lib/tasker/types/auth_config.rb +81 -0
  589. data/lib/tasker/types/backoff_config.rb +142 -0
  590. data/lib/tasker/types/cache_config.rb +257 -0
  591. data/lib/tasker/types/database_config.rb +39 -0
  592. data/lib/tasker/types/dependency_graph.rb +225 -0
  593. data/lib/tasker/types/dependency_graph_config.rb +149 -0
  594. data/lib/tasker/types/engine_config.rb +131 -0
  595. data/lib/tasker/types/execution_config.rb +289 -0
  596. data/lib/tasker/types/health_config.rb +84 -0
  597. data/lib/tasker/types/step_sequence.rb +24 -0
  598. data/lib/tasker/types/step_template.rb +63 -0
  599. data/lib/tasker/types/task_request.rb +60 -0
  600. data/lib/tasker/types/telemetry_config.rb +273 -0
  601. data/lib/tasker/types.rb +64 -0
  602. data/lib/tasker/version.rb +7 -0
  603. data/lib/tasker.rb +82 -0
  604. data/lib/tasks/tasker_tasks.rake +302 -0
  605. metadata +958 -0
@@ -0,0 +1,1748 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Tasker::TaskHandler::StepGroup
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tasker::TaskHandler::StepGroup";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (S)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../TaskHandler.html" title="Tasker::TaskHandler (module)">TaskHandler</a></span></span>
41
+ &raquo;
42
+ <span class="title">StepGroup</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Tasker::TaskHandler::StepGroup
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Tasker::TaskHandler::StepGroup</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+ <dl>
96
+ <dt>Defined in:</dt>
97
+ <dd>lib/tasker/task_handler/step_group.rb</dd>
98
+ </dl>
99
+
100
+ </div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+
105
+ <p>Manages and analyzes groups of workflow steps</p>
106
+
107
+ <p>StepGroup is used to track the status of steps in a workflow and determine whether a task is complete, can be finalized, or needs further processing. It traverses the step dependency graph to find incomplete steps.</p>
108
+
109
+
110
+ </div>
111
+ </div>
112
+ <div class="tags">
113
+
114
+
115
+ </div>
116
+
117
+
118
+
119
+ <h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
120
+ <ul class="summary">
121
+
122
+ <li class="public ">
123
+ <span class="summary_signature">
124
+
125
+ <a href="#prior_incomplete_steps-instance_method" title="#prior_incomplete_steps (instance method)">#<strong>prior_incomplete_steps</strong> &#x21d2; Array&lt;Tasker::WorkflowStep&gt; </a>
126
+
127
+
128
+
129
+ </span>
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+ <span class="summary_desc"><div class='inline'>
143
+ <p>Steps that were incomplete before this processing pass.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ <li class="public ">
150
+ <span class="summary_signature">
151
+
152
+ <a href="#still_incomplete_steps-instance_method" title="#still_incomplete_steps (instance method)">#<strong>still_incomplete_steps</strong> &#x21d2; Array&lt;Tasker::WorkflowStep&gt; </a>
153
+
154
+
155
+
156
+ </span>
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <span class="summary_desc"><div class='inline'>
170
+ <p>Steps that are still incomplete after this pass.</p>
171
+ </div></span>
172
+
173
+ </li>
174
+
175
+
176
+ <li class="public ">
177
+ <span class="summary_signature">
178
+
179
+ <a href="#still_working_steps-instance_method" title="#still_working_steps (instance method)">#<strong>still_working_steps</strong> &#x21d2; Array&lt;Tasker::WorkflowStep&gt; </a>
180
+
181
+
182
+
183
+ </span>
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+ <span class="summary_desc"><div class='inline'>
197
+ <p>Steps that are still in a working state (pending/in progress).</p>
198
+ </div></span>
199
+
200
+ </li>
201
+
202
+
203
+ <li class="public ">
204
+ <span class="summary_signature">
205
+
206
+ <a href="#this_pass_complete_step_ids-instance_method" title="#this_pass_complete_step_ids (instance method)">#<strong>this_pass_complete_step_ids</strong> &#x21d2; Array&lt;Integer&gt; </a>
207
+
208
+
209
+
210
+ </span>
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ <span class="summary_desc"><div class='inline'>
224
+ <p>IDs of steps completed in this processing pass.</p>
225
+ </div></span>
226
+
227
+ </li>
228
+
229
+
230
+ <li class="public ">
231
+ <span class="summary_signature">
232
+
233
+ <a href="#this_pass_complete_steps-instance_method" title="#this_pass_complete_steps (instance method)">#<strong>this_pass_complete_steps</strong> &#x21d2; Array&lt;Tasker::WorkflowStep&gt; </a>
234
+
235
+
236
+
237
+ </span>
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+ <span class="summary_desc"><div class='inline'>
251
+ <p>Steps that were completed in this processing pass.</p>
252
+ </div></span>
253
+
254
+ </li>
255
+
256
+
257
+ </ul>
258
+
259
+
260
+
261
+
262
+
263
+ <h2>
264
+ Class Method Summary
265
+ <small><a href="#" class="summary_toggle">collapse</a></small>
266
+ </h2>
267
+
268
+ <ul class="summary">
269
+
270
+ <li class="public ">
271
+ <span class="summary_signature">
272
+
273
+ <a href="#build-class_method" title="build (class method)">.<strong>build</strong>(task, sequence, steps) &#x21d2; StepGroup </a>
274
+
275
+
276
+
277
+ </span>
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+ <span class="summary_desc"><div class='inline'>
288
+ <p>Build a StepGroup for the given task, sequence and steps.</p>
289
+ </div></span>
290
+
291
+ </li>
292
+
293
+
294
+ </ul>
295
+
296
+ <h2>
297
+ Instance Method Summary
298
+ <small><a href="#" class="summary_toggle">collapse</a></small>
299
+ </h2>
300
+
301
+ <ul class="summary">
302
+
303
+ <li class="public ">
304
+ <span class="summary_signature">
305
+
306
+ <a href="#build-instance_method" title="#build (instance method)">#<strong>build</strong> &#x21d2; void </a>
307
+
308
+
309
+
310
+ </span>
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+ <span class="summary_desc"><div class='inline'>
321
+ <p>Build the step group by analyzing all step collections.</p>
322
+ </div></span>
323
+
324
+ </li>
325
+
326
+
327
+ <li class="public ">
328
+ <span class="summary_signature">
329
+
330
+ <a href="#build_prior_incomplete_steps-instance_method" title="#build_prior_incomplete_steps (instance method)">#<strong>build_prior_incomplete_steps</strong> &#x21d2; void </a>
331
+
332
+
333
+
334
+ </span>
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+ <span class="summary_desc"><div class='inline'>
345
+ <p>Find all steps that were incomplete prior to this processing pass.</p>
346
+ </div></span>
347
+
348
+ </li>
349
+
350
+
351
+ <li class="public ">
352
+ <span class="summary_signature">
353
+
354
+ <a href="#build_still_incomplete_steps-instance_method" title="#build_still_incomplete_steps (instance method)">#<strong>build_still_incomplete_steps</strong> &#x21d2; void </a>
355
+
356
+
357
+
358
+ </span>
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+ <span class="summary_desc"><div class='inline'>
369
+ <p>Find steps that are still incomplete after this processing pass.</p>
370
+ </div></span>
371
+
372
+ </li>
373
+
374
+
375
+ <li class="public ">
376
+ <span class="summary_signature">
377
+
378
+ <a href="#build_still_working_steps-instance_method" title="#build_still_working_steps (instance method)">#<strong>build_still_working_steps</strong> &#x21d2; void </a>
379
+
380
+
381
+
382
+ </span>
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+ <span class="summary_desc"><div class='inline'>
393
+ <p>Find steps that are still in a working state (pending/in progress).</p>
394
+ </div></span>
395
+
396
+ </li>
397
+
398
+
399
+ <li class="public ">
400
+ <span class="summary_signature">
401
+
402
+ <a href="#build_this_pass_complete_steps-instance_method" title="#build_this_pass_complete_steps (instance method)">#<strong>build_this_pass_complete_steps</strong> &#x21d2; void </a>
403
+
404
+
405
+
406
+ </span>
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+ <span class="summary_desc"><div class='inline'>
417
+ <p>Find steps that were completed in this processing pass.</p>
418
+ </div></span>
419
+
420
+ </li>
421
+
422
+
423
+ <li class="public ">
424
+ <span class="summary_signature">
425
+
426
+ <a href="#complete%3F-instance_method" title="#complete? (instance method)">#<strong>complete?</strong> &#x21d2; Boolean </a>
427
+
428
+
429
+
430
+ </span>
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+ <span class="summary_desc"><div class='inline'>
441
+ <p>Check if the task can be considered complete.</p>
442
+ </div></span>
443
+
444
+ </li>
445
+
446
+
447
+ <li class="public ">
448
+ <span class="summary_signature">
449
+
450
+ <a href="#debug_state-instance_method" title="#debug_state (instance method)">#<strong>debug_state</strong> &#x21d2; Hash </a>
451
+
452
+
453
+
454
+ </span>
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+ <span class="summary_desc"><div class='inline'>
465
+ <p>Get debugging state information for the step group.</p>
466
+ </div></span>
467
+
468
+ </li>
469
+
470
+
471
+ <li class="public ">
472
+ <span class="summary_signature">
473
+
474
+ <a href="#error%3F-instance_method" title="#error? (instance method)">#<strong>error?</strong> &#x21d2; Boolean </a>
475
+
476
+
477
+
478
+ </span>
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+ <span class="summary_desc"><div class='inline'>
489
+ <p>Check if the task has any steps in error states.</p>
490
+ </div></span>
491
+
492
+ </li>
493
+
494
+
495
+ <li class="public ">
496
+ <span class="summary_signature">
497
+
498
+ <a href="#find_incomplete_steps-instance_method" title="#find_incomplete_steps (instance method)">#<strong>find_incomplete_steps</strong>(steps, visited_step_ids) &#x21d2; void </a>
499
+
500
+
501
+
502
+ </span>
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+ <span class="summary_desc"><div class='inline'>
513
+ <p>Recursively traverse the DAG to find all incomplete steps.</p>
514
+ </div></span>
515
+
516
+ </li>
517
+
518
+
519
+ <li class="public ">
520
+ <span class="summary_signature">
521
+
522
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(task, sequence, steps) &#x21d2; StepGroup </a>
523
+
524
+
525
+
526
+ </span>
527
+
528
+
529
+ <span class="note title constructor">constructor</span>
530
+
531
+
532
+
533
+
534
+
535
+
536
+
537
+
538
+ <span class="summary_desc"><div class='inline'>
539
+ <p>Initialize a new StepGroup.</p>
540
+ </div></span>
541
+
542
+ </li>
543
+
544
+
545
+ <li class="public ">
546
+ <span class="summary_signature">
547
+
548
+ <a href="#pending%3F-instance_method" title="#pending? (instance method)">#<strong>pending?</strong> &#x21d2; Boolean </a>
549
+
550
+
551
+
552
+ </span>
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+ <span class="summary_desc"><div class='inline'>
563
+ <p>Check if the task should be marked as pending for further processing.</p>
564
+ </div></span>
565
+
566
+ </li>
567
+
568
+
569
+ </ul>
570
+
571
+
572
+ <div id="constructor_details" class="method_details_list">
573
+ <h2>Constructor Details</h2>
574
+
575
+ <div class="method_details first">
576
+ <h3 class="signature first" id="initialize-instance_method">
577
+
578
+ #<strong>initialize</strong>(task, sequence, steps) &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::TaskHandler::StepGroup (class)">StepGroup</a></span></tt>
579
+
580
+
581
+
582
+
583
+
584
+ </h3><div class="docstring">
585
+ <div class="discussion">
586
+
587
+ <p>Initialize a new StepGroup</p>
588
+
589
+
590
+ </div>
591
+ </div>
592
+ <div class="tags">
593
+ <p class="tag_title">Parameters:</p>
594
+ <ul class="param">
595
+
596
+ <li>
597
+
598
+ <span class='name'>task</span>
599
+
600
+
601
+ <span class='type'>(<tt><span class='object_link'><a href="../Task.html" title="Tasker::Task (class)">Tasker::Task</a></span></tt>)</span>
602
+
603
+
604
+
605
+ &mdash;
606
+ <div class='inline'>
607
+ <p>The task being processed</p>
608
+ </div>
609
+
610
+ </li>
611
+
612
+ <li>
613
+
614
+ <span class='name'>sequence</span>
615
+
616
+
617
+ <span class='type'>(<tt><span class='object_link'><a href="../Types/StepSequence.html" title="Tasker::Types::StepSequence (class)">Tasker::Types::StepSequence</a></span></tt>)</span>
618
+
619
+
620
+
621
+ &mdash;
622
+ <div class='inline'>
623
+ <p>The sequence of steps</p>
624
+ </div>
625
+
626
+ </li>
627
+
628
+ <li>
629
+
630
+ <span class='name'>steps</span>
631
+
632
+
633
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
634
+
635
+
636
+
637
+ &mdash;
638
+ <div class='inline'>
639
+ <p>The steps processed in the current pass</p>
640
+ </div>
641
+
642
+ </li>
643
+
644
+ </ul>
645
+
646
+
647
+ </div><table class="source_code">
648
+ <tr>
649
+ <td>
650
+ <pre class="lines">
651
+
652
+
653
+ 45
654
+ 46
655
+ 47
656
+ 48
657
+ 49</pre>
658
+ </td>
659
+ <td>
660
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 45</span>
661
+
662
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_task'>task</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='comma'>,</span> <span class='id identifier rubyid_steps'>steps</span><span class='rparen'>)</span>
663
+ <span class='ivar'>@task</span> <span class='op'>=</span> <span class='id identifier rubyid_task'>task</span>
664
+ <span class='ivar'>@sequence</span> <span class='op'>=</span> <span class='id identifier rubyid_sequence'>sequence</span>
665
+ <span class='ivar'>@steps</span> <span class='op'>=</span> <span class='id identifier rubyid_steps'>steps</span>
666
+ <span class='kw'>end</span></pre>
667
+ </td>
668
+ </tr>
669
+ </table>
670
+ </div>
671
+
672
+ </div>
673
+
674
+ <div id="instance_attr_details" class="attr_details">
675
+ <h2>Instance Attribute Details</h2>
676
+
677
+
678
+ <span id="prior_incomplete_steps=-instance_method"></span>
679
+ <div class="method_details first">
680
+ <h3 class="signature first" id="prior_incomplete_steps-instance_method">
681
+
682
+ #<strong>prior_incomplete_steps</strong> &#x21d2; <tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>
683
+
684
+
685
+
686
+
687
+
688
+ </h3><div class="docstring">
689
+ <div class="discussion">
690
+
691
+ <p>Returns Steps that were incomplete before this processing pass.</p>
692
+
693
+
694
+ </div>
695
+ </div>
696
+ <div class="tags">
697
+
698
+ <p class="tag_title">Returns:</p>
699
+ <ul class="return">
700
+
701
+ <li>
702
+
703
+
704
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
705
+
706
+
707
+
708
+ &mdash;
709
+ <div class='inline'>
710
+ <p>Steps that were incomplete before this processing pass</p>
711
+ </div>
712
+
713
+ </li>
714
+
715
+ </ul>
716
+
717
+ </div><table class="source_code">
718
+ <tr>
719
+ <td>
720
+ <pre class="lines">
721
+
722
+
723
+ 13
724
+ 14
725
+ 15</pre>
726
+ </td>
727
+ <td>
728
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 13</span>
729
+
730
+ <span class='kw'>def</span> <span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span>
731
+ <span class='ivar'>@prior_incomplete_steps</span>
732
+ <span class='kw'>end</span></pre>
733
+ </td>
734
+ </tr>
735
+ </table>
736
+ </div>
737
+
738
+
739
+ <span id="still_incomplete_steps=-instance_method"></span>
740
+ <div class="method_details ">
741
+ <h3 class="signature " id="still_incomplete_steps-instance_method">
742
+
743
+ #<strong>still_incomplete_steps</strong> &#x21d2; <tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>
744
+
745
+
746
+
747
+
748
+
749
+ </h3><div class="docstring">
750
+ <div class="discussion">
751
+
752
+ <p>Returns Steps that are still incomplete after this pass.</p>
753
+
754
+
755
+ </div>
756
+ </div>
757
+ <div class="tags">
758
+
759
+ <p class="tag_title">Returns:</p>
760
+ <ul class="return">
761
+
762
+ <li>
763
+
764
+
765
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
766
+
767
+
768
+
769
+ &mdash;
770
+ <div class='inline'>
771
+ <p>Steps that are still incomplete after this pass</p>
772
+ </div>
773
+
774
+ </li>
775
+
776
+ </ul>
777
+
778
+ </div><table class="source_code">
779
+ <tr>
780
+ <td>
781
+ <pre class="lines">
782
+
783
+
784
+ 19
785
+ 20
786
+ 21</pre>
787
+ </td>
788
+ <td>
789
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 19</span>
790
+
791
+ <span class='kw'>def</span> <span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span>
792
+ <span class='ivar'>@still_incomplete_steps</span>
793
+ <span class='kw'>end</span></pre>
794
+ </td>
795
+ </tr>
796
+ </table>
797
+ </div>
798
+
799
+
800
+ <span id="still_working_steps=-instance_method"></span>
801
+ <div class="method_details ">
802
+ <h3 class="signature " id="still_working_steps-instance_method">
803
+
804
+ #<strong>still_working_steps</strong> &#x21d2; <tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>
805
+
806
+
807
+
808
+
809
+
810
+ </h3><div class="docstring">
811
+ <div class="discussion">
812
+
813
+ <p>Returns Steps that are still in a working state (pending/in progress).</p>
814
+
815
+
816
+ </div>
817
+ </div>
818
+ <div class="tags">
819
+
820
+ <p class="tag_title">Returns:</p>
821
+ <ul class="return">
822
+
823
+ <li>
824
+
825
+
826
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
827
+
828
+
829
+
830
+ &mdash;
831
+ <div class='inline'>
832
+ <p>Steps that are still in a working state (pending/in progress)</p>
833
+ </div>
834
+
835
+ </li>
836
+
837
+ </ul>
838
+
839
+ </div><table class="source_code">
840
+ <tr>
841
+ <td>
842
+ <pre class="lines">
843
+
844
+
845
+ 22
846
+ 23
847
+ 24</pre>
848
+ </td>
849
+ <td>
850
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 22</span>
851
+
852
+ <span class='kw'>def</span> <span class='id identifier rubyid_still_working_steps'>still_working_steps</span>
853
+ <span class='ivar'>@still_working_steps</span>
854
+ <span class='kw'>end</span></pre>
855
+ </td>
856
+ </tr>
857
+ </table>
858
+ </div>
859
+
860
+
861
+ <span id="this_pass_complete_step_ids=-instance_method"></span>
862
+ <div class="method_details ">
863
+ <h3 class="signature " id="this_pass_complete_step_ids-instance_method">
864
+
865
+ #<strong>this_pass_complete_step_ids</strong> &#x21d2; <tt>Array&lt;Integer&gt;</tt>
866
+
867
+
868
+
869
+
870
+
871
+ </h3><div class="docstring">
872
+ <div class="discussion">
873
+
874
+ <p>Returns IDs of steps completed in this processing pass.</p>
875
+
876
+
877
+ </div>
878
+ </div>
879
+ <div class="tags">
880
+
881
+ <p class="tag_title">Returns:</p>
882
+ <ul class="return">
883
+
884
+ <li>
885
+
886
+
887
+ <span class='type'>(<tt>Array&lt;Integer&gt;</tt>)</span>
888
+
889
+
890
+
891
+ &mdash;
892
+ <div class='inline'>
893
+ <p>IDs of steps completed in this processing pass</p>
894
+ </div>
895
+
896
+ </li>
897
+
898
+ </ul>
899
+
900
+ </div><table class="source_code">
901
+ <tr>
902
+ <td>
903
+ <pre class="lines">
904
+
905
+
906
+ 25
907
+ 26
908
+ 27</pre>
909
+ </td>
910
+ <td>
911
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 25</span>
912
+
913
+ <span class='kw'>def</span> <span class='id identifier rubyid_this_pass_complete_step_ids'>this_pass_complete_step_ids</span>
914
+ <span class='ivar'>@this_pass_complete_step_ids</span>
915
+ <span class='kw'>end</span></pre>
916
+ </td>
917
+ </tr>
918
+ </table>
919
+ </div>
920
+
921
+
922
+ <span id="this_pass_complete_steps=-instance_method"></span>
923
+ <div class="method_details ">
924
+ <h3 class="signature " id="this_pass_complete_steps-instance_method">
925
+
926
+ #<strong>this_pass_complete_steps</strong> &#x21d2; <tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>
927
+
928
+
929
+
930
+
931
+
932
+ </h3><div class="docstring">
933
+ <div class="discussion">
934
+
935
+ <p>Returns Steps that were completed in this processing pass.</p>
936
+
937
+
938
+ </div>
939
+ </div>
940
+ <div class="tags">
941
+
942
+ <p class="tag_title">Returns:</p>
943
+ <ul class="return">
944
+
945
+ <li>
946
+
947
+
948
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
949
+
950
+
951
+
952
+ &mdash;
953
+ <div class='inline'>
954
+ <p>Steps that were completed in this processing pass</p>
955
+ </div>
956
+
957
+ </li>
958
+
959
+ </ul>
960
+
961
+ </div><table class="source_code">
962
+ <tr>
963
+ <td>
964
+ <pre class="lines">
965
+
966
+
967
+ 16
968
+ 17
969
+ 18</pre>
970
+ </td>
971
+ <td>
972
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 16</span>
973
+
974
+ <span class='kw'>def</span> <span class='id identifier rubyid_this_pass_complete_steps'>this_pass_complete_steps</span>
975
+ <span class='ivar'>@this_pass_complete_steps</span>
976
+ <span class='kw'>end</span></pre>
977
+ </td>
978
+ </tr>
979
+ </table>
980
+ </div>
981
+
982
+ </div>
983
+
984
+
985
+ <div id="class_method_details" class="method_details_list">
986
+ <h2>Class Method Details</h2>
987
+
988
+
989
+ <div class="method_details first">
990
+ <h3 class="signature first" id="build-class_method">
991
+
992
+ .<strong>build</strong>(task, sequence, steps) &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::TaskHandler::StepGroup (class)">StepGroup</a></span></tt>
993
+
994
+
995
+
996
+
997
+
998
+ </h3><div class="docstring">
999
+ <div class="discussion">
1000
+
1001
+ <p>Build a StepGroup for the given task, sequence and steps</p>
1002
+
1003
+
1004
+ </div>
1005
+ </div>
1006
+ <div class="tags">
1007
+ <p class="tag_title">Parameters:</p>
1008
+ <ul class="param">
1009
+
1010
+ <li>
1011
+
1012
+ <span class='name'>task</span>
1013
+
1014
+
1015
+ <span class='type'>(<tt><span class='object_link'><a href="../Task.html" title="Tasker::Task (class)">Tasker::Task</a></span></tt>)</span>
1016
+
1017
+
1018
+
1019
+ &mdash;
1020
+ <div class='inline'>
1021
+ <p>The task being processed</p>
1022
+ </div>
1023
+
1024
+ </li>
1025
+
1026
+ <li>
1027
+
1028
+ <span class='name'>sequence</span>
1029
+
1030
+
1031
+ <span class='type'>(<tt><span class='object_link'><a href="../Types/StepSequence.html" title="Tasker::Types::StepSequence (class)">Tasker::Types::StepSequence</a></span></tt>)</span>
1032
+
1033
+
1034
+
1035
+ &mdash;
1036
+ <div class='inline'>
1037
+ <p>The sequence of steps</p>
1038
+ </div>
1039
+
1040
+ </li>
1041
+
1042
+ <li>
1043
+
1044
+ <span class='name'>steps</span>
1045
+
1046
+
1047
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
1048
+
1049
+
1050
+
1051
+ &mdash;
1052
+ <div class='inline'>
1053
+ <p>The steps processed in the current pass</p>
1054
+ </div>
1055
+
1056
+ </li>
1057
+
1058
+ </ul>
1059
+
1060
+ <p class="tag_title">Returns:</p>
1061
+ <ul class="return">
1062
+
1063
+ <li>
1064
+
1065
+
1066
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Tasker::TaskHandler::StepGroup (class)">StepGroup</a></span></tt>)</span>
1067
+
1068
+
1069
+
1070
+ &mdash;
1071
+ <div class='inline'>
1072
+ <p>A fully built step group</p>
1073
+ </div>
1074
+
1075
+ </li>
1076
+
1077
+ </ul>
1078
+
1079
+ </div><table class="source_code">
1080
+ <tr>
1081
+ <td>
1082
+ <pre class="lines">
1083
+
1084
+
1085
+ 33
1086
+ 34
1087
+ 35
1088
+ 36
1089
+ 37</pre>
1090
+ </td>
1091
+ <td>
1092
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 33</span>
1093
+
1094
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_build'>build</span><span class='lparen'>(</span><span class='id identifier rubyid_task'>task</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='comma'>,</span> <span class='id identifier rubyid_steps'>steps</span><span class='rparen'>)</span>
1095
+ <span class='id identifier rubyid_inst'>inst</span> <span class='op'>=</span> <span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_task'>task</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='comma'>,</span> <span class='id identifier rubyid_steps'>steps</span><span class='rparen'>)</span>
1096
+ <span class='id identifier rubyid_inst'>inst</span><span class='period'>.</span><span class='id identifier rubyid_build'>build</span>
1097
+ <span class='id identifier rubyid_inst'>inst</span>
1098
+ <span class='kw'>end</span></pre>
1099
+ </td>
1100
+ </tr>
1101
+ </table>
1102
+ </div>
1103
+
1104
+ </div>
1105
+
1106
+ <div id="instance_method_details" class="method_details_list">
1107
+ <h2>Instance Method Details</h2>
1108
+
1109
+
1110
+ <div class="method_details first">
1111
+ <h3 class="signature first" id="build-instance_method">
1112
+
1113
+ #<strong>build</strong> &#x21d2; <tt>void</tt>
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+ </h3><div class="docstring">
1120
+ <div class="discussion">
1121
+ <p class="note returns_void">This method returns an undefined value.</p>
1122
+ <p>Build the step group by analyzing all step collections</p>
1123
+
1124
+
1125
+ </div>
1126
+ </div>
1127
+ <div class="tags">
1128
+
1129
+
1130
+ </div><table class="source_code">
1131
+ <tr>
1132
+ <td>
1133
+ <pre class="lines">
1134
+
1135
+
1136
+ 54
1137
+ 55
1138
+ 56
1139
+ 57
1140
+ 58
1141
+ 59</pre>
1142
+ </td>
1143
+ <td>
1144
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 54</span>
1145
+
1146
+ <span class='kw'>def</span> <span class='id identifier rubyid_build'>build</span>
1147
+ <span class='id identifier rubyid_build_prior_incomplete_steps'>build_prior_incomplete_steps</span>
1148
+ <span class='id identifier rubyid_build_this_pass_complete_steps'>build_this_pass_complete_steps</span>
1149
+ <span class='id identifier rubyid_build_still_incomplete_steps'>build_still_incomplete_steps</span>
1150
+ <span class='id identifier rubyid_build_still_working_steps'>build_still_working_steps</span>
1151
+ <span class='kw'>end</span></pre>
1152
+ </td>
1153
+ </tr>
1154
+ </table>
1155
+ </div>
1156
+
1157
+ <div class="method_details ">
1158
+ <h3 class="signature " id="build_prior_incomplete_steps-instance_method">
1159
+
1160
+ #<strong>build_prior_incomplete_steps</strong> &#x21d2; <tt>void</tt>
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+ </h3><div class="docstring">
1167
+ <div class="discussion">
1168
+ <p class="note returns_void">This method returns an undefined value.</p>
1169
+ <p>Find all steps that were incomplete prior to this processing pass</p>
1170
+
1171
+
1172
+ </div>
1173
+ </div>
1174
+ <div class="tags">
1175
+
1176
+
1177
+ </div><table class="source_code">
1178
+ <tr>
1179
+ <td>
1180
+ <pre class="lines">
1181
+
1182
+
1183
+ 64
1184
+ 65
1185
+ 66
1186
+ 67
1187
+ 68
1188
+ 69
1189
+ 70
1190
+ 71
1191
+ 72
1192
+ 73</pre>
1193
+ </td>
1194
+ <td>
1195
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 64</span>
1196
+
1197
+ <span class='kw'>def</span> <span class='id identifier rubyid_build_prior_incomplete_steps'>build_prior_incomplete_steps</span>
1198
+ <span class='comment'># determine which states were incomplete by traversing the entire DAG
1199
+ </span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1200
+
1201
+ <span class='comment'># Find all root steps (those without parents)
1202
+ </span> <span class='id identifier rubyid_root_steps'>root_steps</span> <span class='op'>=</span> <span class='ivar'>@sequence</span><span class='period'>.</span><span class='id identifier rubyid_steps'>steps</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_step'>step</span><span class='op'>|</span> <span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_parents'>parents</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='rbrace'>}</span>
1203
+
1204
+ <span class='comment'># Recursively traverse the DAG to find all incomplete steps
1205
+ </span> <span class='id identifier rubyid_find_incomplete_steps'>find_incomplete_steps</span><span class='lparen'>(</span><span class='id identifier rubyid_root_steps'>root_steps</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1206
+ <span class='kw'>end</span></pre>
1207
+ </td>
1208
+ </tr>
1209
+ </table>
1210
+ </div>
1211
+
1212
+ <div class="method_details ">
1213
+ <h3 class="signature " id="build_still_incomplete_steps-instance_method">
1214
+
1215
+ #<strong>build_still_incomplete_steps</strong> &#x21d2; <tt>void</tt>
1216
+
1217
+
1218
+
1219
+
1220
+
1221
+ </h3><div class="docstring">
1222
+ <div class="discussion">
1223
+ <p class="note returns_void">This method returns an undefined value.</p>
1224
+ <p>Find steps that are still incomplete after this processing pass</p>
1225
+
1226
+
1227
+ </div>
1228
+ </div>
1229
+ <div class="tags">
1230
+
1231
+
1232
+ </div><table class="source_code">
1233
+ <tr>
1234
+ <td>
1235
+ <pre class="lines">
1236
+
1237
+
1238
+ 112
1239
+ 113
1240
+ 114
1241
+ 115
1242
+ 116
1243
+ 117
1244
+ 118</pre>
1245
+ </td>
1246
+ <td>
1247
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 112</span>
1248
+
1249
+ <span class='kw'>def</span> <span class='id identifier rubyid_build_still_incomplete_steps'>build_still_incomplete_steps</span>
1250
+ <span class='comment'># What was incomplete from the prior DAG traversal that is still incomplete now
1251
+ </span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1252
+ <span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_step'>step</span><span class='op'>|</span>
1253
+ <span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_step'>step</span> <span class='kw'>if</span> <span class='id identifier rubyid_this_pass_complete_step_ids'>this_pass_complete_step_ids</span><span class='period'>.</span><span class='id identifier rubyid_exclude?'>exclude?</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_workflow_step_id'>workflow_step_id</span><span class='rparen'>)</span>
1254
+ <span class='kw'>end</span>
1255
+ <span class='kw'>end</span></pre>
1256
+ </td>
1257
+ </tr>
1258
+ </table>
1259
+ </div>
1260
+
1261
+ <div class="method_details ">
1262
+ <h3 class="signature " id="build_still_working_steps-instance_method">
1263
+
1264
+ #<strong>build_still_working_steps</strong> &#x21d2; <tt>void</tt>
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+ </h3><div class="docstring">
1271
+ <div class="discussion">
1272
+ <p class="note returns_void">This method returns an undefined value.</p>
1273
+ <p>Find steps that are still in a working state (pending/in progress)</p>
1274
+
1275
+
1276
+ </div>
1277
+ </div>
1278
+ <div class="tags">
1279
+
1280
+
1281
+ </div><table class="source_code">
1282
+ <tr>
1283
+ <td>
1284
+ <pre class="lines">
1285
+
1286
+
1287
+ 123
1288
+ 124
1289
+ 125
1290
+ 126
1291
+ 127
1292
+ 128
1293
+ 129</pre>
1294
+ </td>
1295
+ <td>
1296
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 123</span>
1297
+
1298
+ <span class='kw'>def</span> <span class='id identifier rubyid_build_still_working_steps'>build_still_working_steps</span>
1299
+ <span class='comment'># What is still working from the incomplete steps but in a valid, retryable state
1300
+ </span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_still_working_steps'>still_working_steps</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1301
+ <span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_step'>step</span><span class='op'>|</span>
1302
+ <span class='id identifier rubyid_still_working_steps'>still_working_steps</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_step'>step</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html#VALID_STEP_STILL_WORKING_STATES-constant" title="Tasker::Constants::VALID_STEP_STILL_WORKING_STATES (constant)">VALID_STEP_STILL_WORKING_STATES</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
1303
+ <span class='kw'>end</span>
1304
+ <span class='kw'>end</span></pre>
1305
+ </td>
1306
+ </tr>
1307
+ </table>
1308
+ </div>
1309
+
1310
+ <div class="method_details ">
1311
+ <h3 class="signature " id="build_this_pass_complete_steps-instance_method">
1312
+
1313
+ #<strong>build_this_pass_complete_steps</strong> &#x21d2; <tt>void</tt>
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+ </h3><div class="docstring">
1320
+ <div class="discussion">
1321
+ <p class="note returns_void">This method returns an undefined value.</p>
1322
+ <p>Find steps that were completed in this processing pass</p>
1323
+
1324
+
1325
+ </div>
1326
+ </div>
1327
+ <div class="tags">
1328
+
1329
+
1330
+ </div><table class="source_code">
1331
+ <tr>
1332
+ <td>
1333
+ <pre class="lines">
1334
+
1335
+
1336
+ 99
1337
+ 100
1338
+ 101
1339
+ 102
1340
+ 103
1341
+ 104
1342
+ 105
1343
+ 106
1344
+ 107</pre>
1345
+ </td>
1346
+ <td>
1347
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 99</span>
1348
+
1349
+ <span class='kw'>def</span> <span class='id identifier rubyid_build_this_pass_complete_steps'>build_this_pass_complete_steps</span>
1350
+ <span class='comment'># The steps passed into finalize are those processed in this pass
1351
+ </span> <span class='comment'># Check which ones completed in a valid state
1352
+ </span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_this_pass_complete_steps'>this_pass_complete_steps</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1353
+ <span class='ivar'>@steps</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_step'>step</span><span class='op'>|</span>
1354
+ <span class='id identifier rubyid_this_pass_complete_steps'>this_pass_complete_steps</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_step'>step</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html#VALID_STEP_COMPLETION_STATES-constant" title="Tasker::Constants::VALID_STEP_COMPLETION_STATES (constant)">VALID_STEP_COMPLETION_STATES</a></span></span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
1355
+ <span class='kw'>end</span>
1356
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_this_pass_complete_step_ids'>this_pass_complete_step_ids</span> <span class='op'>=</span> <span class='id identifier rubyid_this_pass_complete_steps'>this_pass_complete_steps</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:workflow_step_id</span><span class='rparen'>)</span>
1357
+ <span class='kw'>end</span></pre>
1358
+ </td>
1359
+ </tr>
1360
+ </table>
1361
+ </div>
1362
+
1363
+ <div class="method_details ">
1364
+ <h3 class="signature " id="complete?-instance_method">
1365
+
1366
+ #<strong>complete?</strong> &#x21d2; <tt>Boolean</tt>
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+ </h3><div class="docstring">
1373
+ <div class="discussion">
1374
+
1375
+ <p>Check if the task can be considered complete</p>
1376
+
1377
+ <p>A task is complete if there were no incomplete steps in the prior iteration or if all previously incomplete steps are now complete.</p>
1378
+
1379
+
1380
+ </div>
1381
+ </div>
1382
+ <div class="tags">
1383
+
1384
+ <p class="tag_title">Returns:</p>
1385
+ <ul class="return">
1386
+
1387
+ <li>
1388
+
1389
+
1390
+ <span class='type'>(<tt>Boolean</tt>)</span>
1391
+
1392
+
1393
+
1394
+ &mdash;
1395
+ <div class='inline'>
1396
+ <p>True if the task is complete</p>
1397
+ </div>
1398
+
1399
+ </li>
1400
+
1401
+ </ul>
1402
+
1403
+ </div><table class="source_code">
1404
+ <tr>
1405
+ <td>
1406
+ <pre class="lines">
1407
+
1408
+
1409
+ 137
1410
+ 138
1411
+ 139</pre>
1412
+ </td>
1413
+ <td>
1414
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 137</span>
1415
+
1416
+ <span class='kw'>def</span> <span class='id identifier rubyid_complete?'>complete?</span>
1417
+ <span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span> <span class='op'>||</span> <span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1418
+ <span class='kw'>end</span></pre>
1419
+ </td>
1420
+ </tr>
1421
+ </table>
1422
+ </div>
1423
+
1424
+ <div class="method_details ">
1425
+ <h3 class="signature " id="debug_state-instance_method">
1426
+
1427
+ #<strong>debug_state</strong> &#x21d2; <tt>Hash</tt>
1428
+
1429
+
1430
+
1431
+
1432
+
1433
+ </h3><div class="docstring">
1434
+ <div class="discussion">
1435
+
1436
+ <p>Get debugging state information for the step group</p>
1437
+
1438
+
1439
+ </div>
1440
+ </div>
1441
+ <div class="tags">
1442
+
1443
+ <p class="tag_title">Returns:</p>
1444
+ <ul class="return">
1445
+
1446
+ <li>
1447
+
1448
+
1449
+ <span class='type'>(<tt>Hash</tt>)</span>
1450
+
1451
+
1452
+
1453
+ &mdash;
1454
+ <div class='inline'>
1455
+ <p>Debug information about the step group state</p>
1456
+ </div>
1457
+
1458
+ </li>
1459
+
1460
+ </ul>
1461
+
1462
+ </div><table class="source_code">
1463
+ <tr>
1464
+ <td>
1465
+ <pre class="lines">
1466
+
1467
+
1468
+ 167
1469
+ 168
1470
+ 169
1471
+ 170
1472
+ 171
1473
+ 172
1474
+ 173
1475
+ 174
1476
+ 175
1477
+ 176
1478
+ 177
1479
+ 178
1480
+ 179</pre>
1481
+ </td>
1482
+ <td>
1483
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 167</span>
1484
+
1485
+ <span class='kw'>def</span> <span class='id identifier rubyid_debug_state'>debug_state</span>
1486
+ <span class='lbrace'>{</span>
1487
+ <span class='label'>total_steps:</span> <span class='ivar'>@sequence</span><span class='period'>.</span><span class='id identifier rubyid_steps'>steps</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
1488
+ <span class='label'>prior_incomplete_count:</span> <span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
1489
+ <span class='label'>complete_this_pass_count:</span> <span class='id identifier rubyid_this_pass_complete_steps'>this_pass_complete_steps</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
1490
+ <span class='label'>still_incomplete_count:</span> <span class='id identifier rubyid_still_incomplete_steps'>still_incomplete_steps</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
1491
+ <span class='label'>still_working_count:</span> <span class='id identifier rubyid_still_working_steps'>still_working_steps</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span><span class='comma'>,</span>
1492
+ <span class='label'>step_statuses:</span> <span class='ivar'>@sequence</span><span class='period'>.</span><span class='id identifier rubyid_steps'>steps</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_s'>s</span><span class='op'>|</span> <span class='lbrace'>{</span> <span class='label'>id:</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_workflow_step_id'>workflow_step_id</span><span class='comma'>,</span> <span class='label'>name:</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='label'>status:</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span><span class='comma'>,</span>
1493
+ <span class='label'>is_complete:</span> <span class='id identifier rubyid_complete?'>complete?</span><span class='comma'>,</span>
1494
+ <span class='label'>is_pending:</span> <span class='id identifier rubyid_pending?'>pending?</span><span class='comma'>,</span>
1495
+ <span class='label'>has_errors:</span> <span class='id identifier rubyid_error?'>error?</span>
1496
+ <span class='rbrace'>}</span>
1497
+ <span class='kw'>end</span></pre>
1498
+ </td>
1499
+ </tr>
1500
+ </table>
1501
+ </div>
1502
+
1503
+ <div class="method_details ">
1504
+ <h3 class="signature " id="error?-instance_method">
1505
+
1506
+ #<strong>error?</strong> &#x21d2; <tt>Boolean</tt>
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+ </h3><div class="docstring">
1513
+ <div class="discussion">
1514
+
1515
+ <p>Check if the task has any steps in error states</p>
1516
+
1517
+ <p>A task has errors if any steps are in terminal error states that can’t be retried.</p>
1518
+
1519
+
1520
+ </div>
1521
+ </div>
1522
+ <div class="tags">
1523
+
1524
+ <p class="tag_title">Returns:</p>
1525
+ <ul class="return">
1526
+
1527
+ <li>
1528
+
1529
+
1530
+ <span class='type'>(<tt>Boolean</tt>)</span>
1531
+
1532
+
1533
+
1534
+ &mdash;
1535
+ <div class='inline'>
1536
+ <p>True if the task has error steps</p>
1537
+ </div>
1538
+
1539
+ </li>
1540
+
1541
+ </ul>
1542
+
1543
+ </div><table class="source_code">
1544
+ <tr>
1545
+ <td>
1546
+ <pre class="lines">
1547
+
1548
+
1549
+ 155
1550
+ 156
1551
+ 157
1552
+ 158
1553
+ 159
1554
+ 160
1555
+ 161
1556
+ 162</pre>
1557
+ </td>
1558
+ <td>
1559
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 155</span>
1560
+
1561
+ <span class='kw'>def</span> <span class='id identifier rubyid_error?'>error?</span>
1562
+ <span class='comment'># Use efficient database query with existing failed scope
1563
+ </span> <span class='id identifier rubyid_step_ids'>step_ids</span> <span class='op'>=</span> <span class='ivar'>@sequence</span><span class='period'>.</span><span class='id identifier rubyid_steps'>steps</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:workflow_step_id</span><span class='rparen'>)</span>
1564
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_step_ids'>step_ids</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1565
+
1566
+ <span class='comment'># Query for any steps in error state using the failed scope
1567
+ </span> <span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">WorkflowStep</a></span></span><span class='period'>.</span><span class='id identifier rubyid_failed'>failed</span><span class='period'>.</span><span class='id identifier rubyid_exists?'>exists?</span><span class='lparen'>(</span><span class='label'>workflow_step_id:</span> <span class='id identifier rubyid_step_ids'>step_ids</span><span class='rparen'>)</span>
1568
+ <span class='kw'>end</span></pre>
1569
+ </td>
1570
+ </tr>
1571
+ </table>
1572
+ </div>
1573
+
1574
+ <div class="method_details ">
1575
+ <h3 class="signature " id="find_incomplete_steps-instance_method">
1576
+
1577
+ #<strong>find_incomplete_steps</strong>(steps, visited_step_ids) &#x21d2; <tt>void</tt>
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+ </h3><div class="docstring">
1584
+ <div class="discussion">
1585
+ <p class="note returns_void">This method returns an undefined value.</p>
1586
+ <p>Recursively traverse the DAG to find all incomplete steps</p>
1587
+
1588
+
1589
+ </div>
1590
+ </div>
1591
+ <div class="tags">
1592
+ <p class="tag_title">Parameters:</p>
1593
+ <ul class="param">
1594
+
1595
+ <li>
1596
+
1597
+ <span class='name'>steps</span>
1598
+
1599
+
1600
+ <span class='type'>(<tt>Array&lt;<span class='object_link'><a href="../WorkflowStep.html" title="Tasker::WorkflowStep (class)">Tasker::WorkflowStep</a></span>&gt;</tt>)</span>
1601
+
1602
+
1603
+
1604
+ &mdash;
1605
+ <div class='inline'>
1606
+ <p>Steps to check</p>
1607
+ </div>
1608
+
1609
+ </li>
1610
+
1611
+ <li>
1612
+
1613
+ <span class='name'>visited_step_ids</span>
1614
+
1615
+
1616
+ <span class='type'>(<tt>Array&lt;Integer&gt;</tt>)</span>
1617
+
1618
+
1619
+
1620
+ &mdash;
1621
+ <div class='inline'>
1622
+ <p>IDs of steps already visited</p>
1623
+ </div>
1624
+
1625
+ </li>
1626
+
1627
+ </ul>
1628
+
1629
+
1630
+ </div><table class="source_code">
1631
+ <tr>
1632
+ <td>
1633
+ <pre class="lines">
1634
+
1635
+
1636
+ 80
1637
+ 81
1638
+ 82
1639
+ 83
1640
+ 84
1641
+ 85
1642
+ 86
1643
+ 87
1644
+ 88
1645
+ 89
1646
+ 90
1647
+ 91
1648
+ 92
1649
+ 93
1650
+ 94</pre>
1651
+ </td>
1652
+ <td>
1653
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 80</span>
1654
+
1655
+ <span class='kw'>def</span> <span class='id identifier rubyid_find_incomplete_steps'>find_incomplete_steps</span><span class='lparen'>(</span><span class='id identifier rubyid_steps'>steps</span><span class='comma'>,</span> <span class='id identifier rubyid_visited_step_ids'>visited_step_ids</span><span class='rparen'>)</span>
1656
+ <span class='id identifier rubyid_steps'>steps</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_step'>step</span><span class='op'>|</span>
1657
+ <span class='comment'># Skip if we&#39;ve already visited this step (avoid cycles, though they shouldn&#39;t exist in a DAG)
1658
+ </span> <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_visited_step_ids'>visited_step_ids</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_workflow_step_id'>workflow_step_id</span><span class='rparen'>)</span>
1659
+
1660
+ <span class='comment'># Add this step to visited
1661
+ </span> <span class='id identifier rubyid_visited_step_ids'>visited_step_ids</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_workflow_step_id'>workflow_step_id</span>
1662
+
1663
+ <span class='comment'># Add to prior_incomplete_steps if this step is incomplete
1664
+ </span> <span class='id identifier rubyid_prior_incomplete_steps'>prior_incomplete_steps</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_step'>step</span> <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html" title="Tasker::Constants (module)">Constants</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Constants.html#VALID_STEP_COMPLETION_STATES-constant" title="Tasker::Constants::VALID_STEP_COMPLETION_STATES (constant)">VALID_STEP_COMPLETION_STATES</a></span></span><span class='period'>.</span><span class='id identifier rubyid_exclude?'>exclude?</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_status'>status</span><span class='rparen'>)</span>
1665
+
1666
+ <span class='comment'># Recursively check all children
1667
+ </span> <span class='id identifier rubyid_find_incomplete_steps'>find_incomplete_steps</span><span class='lparen'>(</span><span class='id identifier rubyid_step'>step</span><span class='period'>.</span><span class='id identifier rubyid_children'>children</span><span class='comma'>,</span> <span class='id identifier rubyid_visited_step_ids'>visited_step_ids</span><span class='rparen'>)</span>
1668
+ <span class='kw'>end</span>
1669
+ <span class='kw'>end</span></pre>
1670
+ </td>
1671
+ </tr>
1672
+ </table>
1673
+ </div>
1674
+
1675
+ <div class="method_details ">
1676
+ <h3 class="signature " id="pending?-instance_method">
1677
+
1678
+ #<strong>pending?</strong> &#x21d2; <tt>Boolean</tt>
1679
+
1680
+
1681
+
1682
+
1683
+
1684
+ </h3><div class="docstring">
1685
+ <div class="discussion">
1686
+
1687
+ <p>Check if the task should be marked as pending for further processing</p>
1688
+
1689
+ <p>A task is considered pending if there are still steps in a working state.</p>
1690
+
1691
+
1692
+ </div>
1693
+ </div>
1694
+ <div class="tags">
1695
+
1696
+ <p class="tag_title">Returns:</p>
1697
+ <ul class="return">
1698
+
1699
+ <li>
1700
+
1701
+
1702
+ <span class='type'>(<tt>Boolean</tt>)</span>
1703
+
1704
+
1705
+
1706
+ &mdash;
1707
+ <div class='inline'>
1708
+ <p>True if the task should be pending</p>
1709
+ </div>
1710
+
1711
+ </li>
1712
+
1713
+ </ul>
1714
+
1715
+ </div><table class="source_code">
1716
+ <tr>
1717
+ <td>
1718
+ <pre class="lines">
1719
+
1720
+
1721
+ 146
1722
+ 147
1723
+ 148</pre>
1724
+ </td>
1725
+ <td>
1726
+ <pre class="code"><span class="info file"># File 'lib/tasker/task_handler/step_group.rb', line 146</span>
1727
+
1728
+ <span class='kw'>def</span> <span class='id identifier rubyid_pending?'>pending?</span>
1729
+ <span class='id identifier rubyid_still_working_steps'>still_working_steps</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='period'>.</span><span class='id identifier rubyid_positive?'>positive?</span>
1730
+ <span class='kw'>end</span></pre>
1731
+ </td>
1732
+ </tr>
1733
+ </table>
1734
+ </div>
1735
+
1736
+ </div>
1737
+
1738
+ </div>
1739
+
1740
+ <div id="footer">
1741
+ Generated on Tue Jul 1 16:47:38 2025 by
1742
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1743
+ 0.9.37 (ruby-3.2.4).
1744
+ </div>
1745
+
1746
+ </div>
1747
+ </body>
1748
+ </html>