Through the Plandora an user is able to create or attribute tasks that can be accomplished by the members of project.
Many times, a project demands a group of tasks that can be executed in a particular sequence. This kind of set is called "Workflow".
In Plandora, a Workflow consists in a set of tasks and decision nodes. Plandora will control the stages of each workflow, the allowed transitions and which task will be blocked or released to be performed.
A Workflow must be started by project leader that could create it ad-hoc or linked with a Request.
During the Workflow configuration, the leader will define for each node, which project member will perform each task.
Some nodes can be allocated with more than one member. In this case, the stage of workflow will be incremented only when all tasks will closed. The exception is to the nodes related to a 'decision'
In the same way, it is possible to define a workflow instance passing by different projects, that It's usefull in cases when a process involves resources from diferent areas.
The image above shows a form used by project leader to create a workflow instance. Each node can be selected and all related fields can be changed before the assignment, for example, the name of the task, the resource related, project, iteration, etc.
Each node will be turned in a task assigned to a specific project member. The successor task will be blocked until the predecessor task is closed. For tasks related to a decision point at workflow, a question will be displayed to user during the task closure.
Plandora allows create custom workflows. Until version 1.14.x Plandora does not include any user friendly form to create a workflow template, but all Plandora infra structure is ready to deal with custom work trees.
Even the "native" workflows that are part of Plandora installation package were generated by script at database. Even them can be removed or modified.
The script below shows how to create a workflow considering a typical and hypothetical process of "Acquisition"
insert into planning (id, description, creation_date) values('27', 'Acquisition Process', '2015-05-20');
insert into template (id, name, root_node_id) values('27', 'Acquisition Process', '30');
insert into node_template (id, name, description, project_id, node_type, planning_id, next_node_id) values ('30', 'Acquisition approval', 'Analysis and/or planning to approve the material/service acquisition.', '[PROJECT_ID]', '1', '27', '31');
insert into node_template (id, name, description, project_id, node_type, planning_id, next_node_id) values ('31', 'Acquisition validation', 'Verify whether one or more requested items will be acquire', '[PROJECT_ID]', '2', '27', '32');
insert into node_template (id, name, description, project_id, node_type, planning_id, next_node_id) values ('32', 'Quotation execution', 'Execution of quotation process for a material or service approved.', '[PROJECT_ID]', '1', '27', '33');
insert into node_template (id, name, description, project_id, node_type, planning_id, next_node_id) values ('33', 'Acquisition execution', 'This activity involves the execution of the purchase, the receipt of the goods or monitoring of service as well as the renegotiation if the requester does not accept what was delivered.', '[PROJECT_ID]', '1', '27', '34');
insert into node_template (id, name, description, project_id, node_type, planning_id, next_node_id) values ('34', 'Delivery Acceptance', 'Verify if the product/service delivered was accepted by the requester', '[PROJECT_ID]', '2', '27', null);
insert into step_node_template (id, category_id, resource_list) values ('30', '0', null);
insert into decision_node_template (id, question_content, next_node_id_if_false) values ('31', 'The acquisition must be approved?', null);
insert into step_node_template (id, category_id, resource_list) values ('32', '0', null);
insert into step_node_template (id, category_id, resource_list) values ('33', '0', null);
insert into decision_node_template (id, question_content, next_node_id_if_false) values ('34', 'The requester HAS ACCEPTED the deliverable?', '33');