2017 © Pedro Peláez
 

symfony-bundle workflow-bundle

Simple workflow bundle for Symfony2

image

free-agent/workflow-bundle

Simple workflow bundle for Symfony2

  • Sunday, June 17, 2012
  • by jeremyFreeAgent
  • Repository
  • 1 Watchers
  • 2 Stars
  • 1,318 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

FreeAgentWorkflowBundle

Build Status, (*1)

Simple workflow bundle for Symfony2, (*2)

What is it ?

Workflow

A Workflow is a configuration that contains an array of Step. Foreach Step you must define :, (*3)

  • an array of Action to run task when the Step is reached
  • an array of Validation to tell if the Step is reachable
  • an array of possible next Step

Action

An Action define what to do with the run() method., (*4)

Validation

An Validation define what to validate and return the result with the validate() method., (*5)

Set up

Create your Workflow configuration

In your config.yml :, (*6)

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

Actions & Validations

You need also to set up your Actions and Validations services., (*7)

Usage

<?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');
}

TODOs

  • Better code for Step
  • Better tests

The Versions

17/06 2012

dev-master

9999999-dev http://github.com/jeremyFreeAgent/FreeAgentWorkflowBundle

Simple workflow bundle for Symfony2

  Sources   Download

MIT

The Requires

 

by Jérémy Romey

workflow