= !BluePrint: WORKFLOW SUPPORT = [[TOC]] == Introduction == The Blueprint outlines the development of Workflow Support for Sahana Eden i.e to develop a generator that can generate robust wizards for user to guide them through the different processes of sahana. A wizard is a user interface that presents a user with a sequence of forms that lead the user through a series of well-defined steps.Tasks that are complex, infrequently performed, or unfamiliar may be easier to perform using these wizards. === Description === Workflow Support includes developing Multi-Step Form Generator for Sahana Eden - ==== Multi-Step Forms(Wizard) Generator ==== It includes development of a Multi-step forms(wizard) Generator which can act on some defined data and can generate robust multi-step forms or wizard out of the defined data.[[BR]] The data will be defined via code by the developers.[[BR]] The wizard thus generated can be used by users and can help them understanding Sahana Eden dexterously and expeditiously.[[BR]] It will also help developers to make robust wizards for different modules of Sahana Eden.[[BR]] === Target Problem === Workflow Support aims to solve two conspicuous problems - [[BR]] * '''First''' - Sometimes for new users of Sahana Eden it gets a bit abstruse to understand the workflow of different resources quickly. * '''Second''' - Sometimes user needs to input complex data into a system that is easier for the user to comprehend parting the process into multiple steps. * '''Third''' - In Sahana Eden currently the various forms are mostly separated except for navigation links. so users have to maneuver from one place to another to complete related tasks. All these points address the need of Multi-step forms( Wizards ) for Sahana Eden. === Benefit To Sahana Eden === Workflow support smartly increases the usability of Sahana Eden by making it convenient, easy to use and more agile as it guides the user through the different processes of sahana eden step by step and helps the user understand Eden. It will also help users to perform complex task with ease. === Example of Possible Workflows === ''' 1. Name - Register Volunteer ''' * ''' Step 1 ''' - Enter Personal Details * ''' Step 2 ''' - Enter Contact Details * ''' Step 3 ''' - Enter Skills * ''' Step 4 ''' - View Volunteer ''' 2. Name - Add Project ''' * ''' Step 1 ''' - Enter Project Name + Description * ''' Step 2 ''' - Enter Project Start + End * ''' Step 3 ''' - Enter Project Locations * ''' Step 4 ''' - Enter Project Staff * ''' Step 5 ''' - View Project == Stakeholders == * '''End Users''' - Users of Sahana Eden will be benefited the most with Workflow Support as it will help them understand Sahana Eden quickly and easily. [[BR]] * '''Developers''' - With the help of Multi-step forms Generator, developers of sahana eden can easily create a wizard for new modules. * '''Sys Admin''' == User Stories == * As an end user, I want a wizard to guide me and help me through different resources available in Sahana Eden. * To take a Wizard Ex. To register volunteer, User will click on the Wizard Button on the the volunteer menu. * Then the first step will be to enter basic details of a volunteer. * As he fills the form he will taken to the next step i.e to enter contact details. * The wizard will end when he complete all the steps. * As a developer, I want a Multi-step forms Generator that can easily generate a robust wizards for me by accepting some simple data. * Developer will have define some data to the Generator. * Which will be converted into wizards(Multi-step forms) by the Generator. == Requirements == === Functional === * Generator should accept simple data, data can be as simple as resource name and list of field names. * Multi-step forms or wizards thus generated should have the ability to adapt changes as the data defined to generator changes. * Generator should also adapt structural changes if the structure of the defined data changes. * Generator should provide full access control to the user, they can go back, skip steps and quit at any point. * Wizards or Multi-Step forms should support decision(branches) Ex. they will ask user to choose from option A or option B to proceed further. * Multi-step forms or wizard 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. * Multi-step forms should have a simple and user-friendly user interface. * These Multi-step forms or wizards should be easily available and accessible to the user after successful login. * User should be given an option to allow All the steps to be displayed simultaneously on one page. * Wizards should support user role awareness. === Non-functional === == Use-Cases == [[Image(Workflow.png)]] == Design == === Data Model === todo === Workflows === ==== As Developer ==== * Developers will have to define data to the Generator . * Data possibly will be a resource name along with fields list which makes up an activity. * These will be followed by control edges (Ex. whether node will be optional,required or not allowed). * For each node developers will also define a pointer to the next node using a setter function as shown below. * Wizard generator will convert the given data into desired wizard template. The defined data data structure will be of the following format - [[BR]] [[BR]] {{{ # General way to define a node is # node = S3SQLWizardForm("Table Name", Description, **Fields Names) # Defining first step node1 = S3SQLWizardForm("pr_person", Required, "first_name", "last_name", "gender", "date_of_birth") # Defining second step node2 = S3SQLWizardForm("pr_person", Optional, "phone", "email") # Define flow of the Wizard by pointing each node to the next node node1.add_next(node2) # node1 -> node2 node2.add_next(node3, node4) # node2 -> (node3 or node4) }}} ==== As User ==== * To take a wizard for any resource user will have to click on the wizard button on the homepage or on the resource menu for which he want to take the wizard for. * If he selected homepage then users will have to select from different options shown on the screen which will link them to different wizards for different resources. * Then users will enter the wizard like interface with their progress(steps) shown on the top of the page. * Each node in a wizard will be a collection of fields which users will have to fill in order to proceed to the next step. * User can click on the back button to go back one step. * User sometimes might have multiple ways to proceed further. * User can also skip optional steps. * After completing the wizard user will be redirected back to the page where a list of wizards will be displayed. One simple case of workflow is depicted here - [[Image(workflow 2.png)]] === Wireframes === [[Image(mockup1.png)]] [[BR]] [[Image(nmockip2.png)]] === Technologies === == Implementation == === (Prospective) === * User id and his progress will be stored on in the database, session or on the page. * The Multi-step forms Generator will reuse S3SQLCustomForm where possible. * The idea is to define a S3SQLWizardForm which will be defined like S3SQLCustomForm. * Each node will be defined using S3SQLWizardForm, which will accept resource, edge description and field list. * All the node will then be passed to generator function which will link all the nodes and convert it into a wizard template. * Adding Back, Next, Skip and Quit functionality. ''' Alternative ''' The alternative approach is been discussed here - http://logs.sahanafoundation.org/sahana-eden/2013-04-30.txt The Idea of this approach is to define Next Node (the next step) while defining each node.So that that each node know where to go next. Some possible example could be the way State Machine works [https://en.wikipedia.org/wiki/Finite-state_machine] ''' Future Implementation ''' Following are to be implemented later - * Making a UI for Generator , So that not only developer but sys admin can easily make wizards for different resources or new modules. * For mobile interfaces, the idea is to develop S3SQLWizardMobileForm which will morph one steps into three. == References == * [http://micro-workflow.com/PDF/WorkflowEngineEvaluation.pdf] * [http://eden.sahanafoundation.org/wiki/S3SQLForm] === Discussions === * [https://groups.google.com/forum/?fromgroups=#!topic/sahana-eden/CEws1XSNgs4] * [http://logs.sahanafoundation.org/sahana-eden/2013-03-28.txt] * [http://logs.sahanafoundation.org/sahana-eden/2013-04-19.txt] * [http://logs.sahanafoundation.org/sahana-eden/2013-04-21.txt] * [http://logs.sahanafoundation.org/sahana-eden/2013-04-28.txt] * [http://logs.sahanafoundation.org/sahana-eden/2013-04-30.txt] ---- BluePrint