free-agent / workflow-bundle
该包已被废弃且不再维护。未建议替代包。
适用于 Symfony2 的简单工作流包
dev-master
2012-06-17 08:38 UTC
Requires
- php: >=5.3.6
- symfony/symfony: 2.*
This package is not auto-updated.
Last update: 2020-01-24 14:59:51 UTC
README
适用于 Symfony2 的简单工作流包
这是什么?
工作流
工作流 是一个包含 步骤 数组的配置。对于每个 步骤,您必须定义
- 一个 操作 数组,以便在 步骤 达到时运行任务
- 一个 验证 数组,以告知 步骤 是否可到达
- 一个可能的下一个 步骤 数组
操作
操作 定义了 run() 方法应该做什么。
验证
验证 定义了要验证的内容,并通过 validate() 方法返回结果。
设置
创建您的 工作流 配置
在您的 config.yml 中
free_agent_workflow: workflows: example: default_step: draft validations: - free_agent_workflow.validation.pre_validation - free_agent_workflow.validation.pre_validation actions: - free_agent_workflow.action.post_action - free_agent_workflow.action.post_action - free_agent_workflow.action.post_action steps: draft: label: Draft actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example - free_agent_workflow.validation.example possible_next_steps: - removed - validated removed: label: Removed actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example - free_agent_workflow.validation.example possible_next_steps: - draft validated: label: Validated actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example possible_next_steps: - published - removed - draft published: label: Published actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example - free_agent_workflow.validation.example possible_next_steps: - unpublished - removed - draft unpublished: label: Unpublished actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example - free_agent_workflow.validation.example possible_next_steps: - published - removed - draft example_two: steps: draft: label: Example actions: - free_agent_workflow.action.example validations: - free_agent_workflow.validation.example - free_agent_workflow.validation.example possible_next_steps: - removed
操作 & 验证
您还需要设置您的 操作 和 验证 服务。
用法
<?php $manager = $this->getContainer()->get('free_agent_workflow.workflow.manager'); $manager->setModel($model); if ($manager->canReachStep('draft')) { $manager->reachStep('draft', 'This is my draft', time()); $model = $manager->getModel(); } else { $errors = $manager->getValidationErrors('draft'); }
待办事项
- 改进步骤的代码
- 改进测试