free-agent/workflow-bundle

该包已被废弃且不再维护。未建议替代包。

适用于 Symfony2 的简单工作流包

dev-master 2012-06-17 08:38 UTC

This package is not auto-updated.

Last update: 2020-01-24 14:59:51 UTC


README

Build Status

适用于 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');
}

待办事项

  • 改进步骤的代码
  • 改进测试