= !BluePrint: WORKFLOW SUPPORT = [[TOC]] == Introduction == The Blueprint outlines the improvement of Workflow Support for Sahana Eden i.e to develop a engine that can generate workflows for user of Sahana Eden.A workflow consists of a sequence of connected steps which are typically to be accomplished in a certain order. To accomplish this we will need a Workflow Engine,which manages workflow configuration, tracks and restores status of user tasks,provides the "next" options according to pre-defined conditions, and invokes the respective methods. === Target Problem === Currently in Eden we realize if a user has successfully completed a CRUD action, he's forwarded to the next page.[[BR]] The main problem with that is that the "next page" is hardcoded and doesn't adapt to the actual user-task - it connects always the same steps in always the same way - unconditionally.[[BR]] So to overcome such problem we need a workflow Engine that can connects the steps, defined in the configuration and then perform different task accordingly.[[BR]] == Stakeholders == * '''End Users''' - Users of Sahana Eden will be benefited the most with Workflow Support as it help them to complete task quickly. * '''Developers''' - With the help of workflow engine, developers of sahana eden can easily create a workflow for different modules. == User Stories == * As an end user, I want a workflow to guide me and help me through different resources available in Sahana Eden. * To take a Workflow User will click on the Workflow Button * Then he will first step and as he will complete his task. * He will be then redirected to next step. * The workflow will end when he complete all the steps. * The User can end the workflow at any time * And may be will have a option to save the progress also * As a developer, I want a Workflow engine that can easily create Workflow for me by accepting some simple data. * Developer will be able to easily define the configuration of the Workflow Engine. * Which will be converted into Workflows by the Workflow Engine. == Requirements == === Functional === * Workflow should easy to configure. * Workflow thus generated should have the ability to adapt changes as the configuration defined to Engine changes.. * Workflows should provide full access control to the user, they can go back, skip steps and quit at any point. * Workflow should support decision(branches) Ex. they will ask user to choose from option A or option B to proceed further. * Workflow should track the audit trails i.e keeping the record of the running processes as they unfold, so that users can come back to the same point where they left off. * Allow the user to choose the route, e.g. from a menu of user tasks * These workflow should be easily available and accessible to the user after successful login. == Design == === Data Model === Holds the workflow current status, data , user id etc. The data model can be found in modules/s3db/workflow.py.[[BR]]Table name--> workflow_status.[[BR]] ||'''Field Name'''||'''Purpose'''||'''Datatype/table'''|| || User_id ||The user id of the user who started the workflow||FK referenced from auth.user_id (integer)|| ||Status|| The current status of the workflow ||string|| ||Data||The workflow data(these can be json serialised objects)||json|| ||Name||The workflow name||string|| ||s3.meta_fields()|| ||metadata|| ||uuid (In s3.meta_fields())||unique id to identify each workflow ||string|| === Flow Diagram === ''' Developer Perspective ''' [[Image(Workflow flow dia .png)]] ''' User Perspective ''' [[Image(Workflow user flow dia.png)]] === Wireframes === This is what user will see during a workflow. [[BR]] All the action button here will will contain the workflow id (wf_id). [[BR]] A bar above will track the progress of the user. [[BR]] There will be a default Exit action button on each page which will quite the workflow. [[BR]] [[BR]] [[Image(Wmockup1.png)]] [[BR]] If user navigates away, he will be shown a return action button and cancel action button. [[BR]] [[BR]] [[Image(Wmockup2.png)]] [[BR]] Further in future we will use the workflow data to show different menus in the workflow nodes. [[BR]] Here, this menu show the selected items from previous nodes. [[BR]] [[BR]] [[Image(Wmockup3.png)]] [[BR]] === Workflows === ==== Configure Workflows ==== Here's a tutorial on how to create workflow in Sahana Eden [[wiki:DeveloperGuidelines/s3workflow| Workflow tutorial ]] === Technologies === == Implementation == Currently the project is under development and we have set following Goals Goals - * Configuration of event handlers (nodes) in a workflow * Storing and retrieving of workflow instances * Mapping of instance status + current event to a certain node * Interface between workflow engine (=event manager) and workflow nodes (=event handler) * Interface between nodes and "actions" (=S3Methods?) * Workflow widgets (=widgets for users to perform workflow actions), and how to put them into a page For more detail please follow this page - [[http://eden.sahanafoundation.org/wiki/Event/2013/GSoC/WorkflowSupport | Workflow Support(Gsoc 2013 )]]