Core concepts

django-lb-workflow is Activity-Based Workflow. Activity-based workflow systems have workflow processes comprised of activities to be completed in order to accomplish a goal.


Half Config

django-lb-workflow is half config.

  • Data model/action/Layout of form is written by code.
    • They are too complex to config and the change is not too often.
  • The node(activity) and transition is configurable.
    • The pattern is clear and the change is often.

Data model



A process holds the map that describes the flow of work.

The process map is made of nodes and transitions. The instances you create on the map will begin the flow in the draft node. Instances can be moved forward from node to node, going through transitions, until they reach the end node.


Node is the states of an instance.


A Transition connects two node: a From and a To activity.

Since the transition is oriented you can think at it as being a link starting from the From and ending in the To node. Linking the nodes in your process you will be able to draw the map.

Each transition can have a condition that will be tested whether this transition is available.

Each transition is associated to a app that define an action to perform.


An application is a python view that can be called by URL.



A process instance is created when someone decides to do something, and doing this thing means start using a process defined in django-lb-workflow. That’s why it is called “process instance”. The process is a class (=the definition of the process), and each time you want to “do what is defined in this process”, that means you want to create an INSTANCE of this process.

So from this point of view, an instance represents your dynamic part of a process. While the process definition contains the map of the workflow, the instance stores your usage, your history, your state of this process.


A task object represents a task you are performing.


A task perform log.


A abstract class for flow model. Every flow model should inherit from it.

User Parser

django-lb-workflow use a text field to config users for Node and user a parser to cover it to Django model. The default parser is lbworkflow.core.userparser.SimpleUserParser. You can replace it with your implement.

Views and Forms

django-lb-workflow provide a set of views and forms to customized flow.

Classes for create/edit/list process instance is in lbworkflow/views/

Classes for customize transition is in lbworkflow/views/

Classes for customize form is in lbworkflow/views/

url provide by django-lb-workflow

you can find all url in lbworkflow/

  • Main entrance.
    • wf_todo List tasks that need current user to process.
    • wf_my_wf List processes that current user submitted.
    • wf_start_wf List the processes that current user can submit.
    • wf_report_list Each process have a default report. This url will list all report link.
  • Flow
    • wf_new [wf_code] Submit a new process. wf_code used to specify which process to submit.
    • wf_edit [pk] Edit a process.
    • wf_delete Delete a process.
    • wf_list [wf_code] Default report for a process. wf_code used to specify the process.
    • wf_detail [pk] Display the detail information for a process.
    • wf_print_detail [pk] A page to display process information used for print.
  • Actions(App)
    • wf_agree Agree a process.
    • wf_back_to Rollback process to previous node.
    • wf_reject Reject a process.
    • wf_give_up Give up a process.
    • wf_batch_agree
    • wf_batch_reject
    • wf_batch_give_up
    • wf_execute_transition Execute a transition for a process.
    • wf_execute_transition [wf_code] [trans_func] Execute a transition for a process with customize function.