Compliance Evaluation: DIGIT Workflow Service
Content
Tool Description
DIGIT is a service delivery and governance platform. It enables ease of access to services for citizens, ease of coordination for employees & vendors, ease of administration for administrators and ease of policy-making for policymakers & researchers.
Workflows are a series of steps that moves a process from one state to another state by actions performed by different kind of Actors - Humans, Machines, Time based events etc. to achieve a goal like onboarding an employee, or approve an application or granting a resource etc. The egov-workflow-v2 is a workflow engine which helps in performing these operations seamlessly using a predefined configuration.
Evaluation Status
Status | CandIDATE |
---|---|
Date | 2023-04-19 |
Reviewer | Omkar Ghatpande |
Version of Candidate | https://github.com/egovernments/DIGIT-OSS/releases/tag/fsm_v1.3 |
Version of Specification | 0.9.3. https://govstack.gitbook.io/bb-workflow/1-version-history |
Tool Attributes
Logo |
|
---|---|
Name | DIGIT Platform (Workflow Service) |
Web | |
Docs | https://core.digit.org/platform/core-services/workflow-service |
Download | https://github.com/egovernments/DIGIT-OSS/tree/master/core-services/egov-workflow-v2 |
BBs |
Compliance Criteria
Criterion | DIGIT Workflow Service | Comment |
---|---|---|
Deployability via container |
|
|
Availability of an adapter or native interfacing support |
| Testing to be done |
Fulfillment of MUST Key Digital Functionalities stated in the respective BB specifications | 3 out of 4 |
|
Fulfillment of Service API requirements (using the provided test harness) | 4 out of 5 |
|
Fulfillment of MUST cross-cutting and functional requirements stated in the respective BB specifications | 16 out of 21 |
|
Fulfillment of SHOULD cross-cutting and functional requirements stated in the respective BB specifications | 1 out of 3 |
|
Fulfillment of MUST cross-cutting requirement stated in the Architecture BB specifications |
|
|
Fulfillment of SHOULD cross-cutting requirements stated in the Architecture BB specifications |
|
|
Usage rights (proprietary or FOSS license) of the software are stated. |
| https://github.com/egovernments/DIGIT-OSS/blob/master/LICENSE |
Documentation for deployment, integration and configuration (incl. examples) is provided. |
| https://core.digit.org/platform/core-services/workflow-service |
Fulfillment of Requirement Specifications
Key Digital Functionalities
Functionality | DIGIT compliance | Comments |
Allow business users to define and create arbitrary workflow processes (1) that can be instantiated via API, via manual interaction, or via the passage of time | Partial | Can be instantiated via API only |
Allow business users to define and create arbitrary workflow processes (2) that can perform calculations, make API requests (e.g HTTPS) make HTTP requests, and execute scripts |
| This is not satisfied by just Workflow alone but by a bundle of services along with Workflow. |
Allow business users to monitor the status of process instances | Partial | Business users will be able to monitor the process instances at their business usage level by querying workflow status etc. But Workflow does not have a standalone UI as such. |
Allow other applications to discover existing processes via API |
| We have decomissioned general search for workflows across modules as that leads to performance problems. If a module code is passed, then we will return all workflows configured for that module. |
Cross-Cutting Requirements
Requirement | DIGIT compliance | Comments |
Privacy Personal data MUST be kept private and never shared with any parties, except where specific authorization has been granted |
|
|
Audit Logging Logs MUST be kept in a database of all records that are created, updated, or deleted. Logs MUST include timestamps and identify the user and affiliation that performed the transaction |
|
|
Source Code Source code SHOULD be available and easily accessible |
|
|
Performance/Scalability The workflow BB application must support communication between multiple instances of the same application (e.g., when deployed in a high-availability environment such as a Kubernetes cluster with a load balancer) so that redundant copies of the workflow engine can guarantee to not duplicate individual activities in an instance or mistakenly create multiple instances of the same process when only one is requested. (I.E., The workflow engine must handle executing instances as “singletons” across a distributed computing environment.) |
|
|
Functional Requirements
Requirement | DIGIT Compliance | Comment |
MUST allow the design of business processes via UI, i.e. support creation of diagrams as it is depicted in the BPMN specification v.2.0 in the section 7.3 (“BPMN Diagram Types”) with subsequent possibility to generate from diagrams XML and/or JSON version of process definition |
| We do JSON config but it is not translated from any BPMN specification. |
MUST be able to execute that BPMN process given a valid BPMN-compliant workflow specification |
| We are not BPMN compliant but we can specify and execute workflows |
MUST allow users to define/execute processes using BPMN v.2.0 specification basic categories of elements such as Flow Objects, Data, Connecting Objects, Swimlanes and Artifacts |
| We are not BPMN compliant. |
SHOULD allow users to define/execute processes using BPMN v.2.0 specification Extended Modeling Elements as it is depicted in the specification section 7.2.2 |
| We are not BPMN compliant. |
SHOULD allow 5 types of decision gateways: Exclusive Gateway, Event-Based Gateway, Inclusive Gateway, Parallel Gateway |
| Decision gateways in DIGIT are built in the business modules, not in workflow itself. |
MUST allow the configuration and execution of an arbitrary block/script/program/component during a business process |
| This is handled in the business module level, not at workflow. |
MUST facilitate the development of an arbitrary script (to be used for things like message translation) |
| Workflow along with localization will give us this functionality |
MUST allow “embedded sub-processes” which depend completely on the parent process and are not reusable; however all process data used in the parent process is directly accessible by the embedded sub-process |
| Since business logic is not part of workflow itself, this can be handled at will by the module utilising the workflow service. |
MUST allow “reusable sub-processes” which do not depend on the parent process; they are typically modeled or designed separately so that they may be used in multiple contexts; this type does not necessarily have access to the parent's data by default; explicit mapping of attributes is often required to achieve data sharing between parent and sub-process |
| Since business logic is not part of workflow itself, this can be handled at will by the module utilising the workflow service. |
MUST allow the initiation of an asynchronous business process via API and respond with an appropriate HTTP response code, e.g., 202/Accepted |
|
|
MUST allow the initial “state” (or beginning data) to be sent along with the request to initiate a process via API |
|
|
MUST respond with a unique instance id when process instance is instantiated via API |
|
|
MUST allow the initiation of a synchronous business process via API |
| This can be done at a business service level which can trigger a synchronous call to workflow etc.. |
MUST allow the definition of a cron/time-based workflow trigger via a user interface |
| A script can be written to trigger a workflow at a specific time via Cron or other means. But this is not a Workflow feature in itself. |
MUST allow the execution of a workflow process based on cron/timer |
| A script can be written to trigger a workflow at a specific time via Cron or other means. But this is not a Workflow feature in itself. This can be part of the business module that integrates with Workflow |
MUST allow the definition of a “flow-trigger” which can instantiate a process based on at least “successful completion” or “failure of/exception in” an earlier process |
| The linkages between various processes is handled at a business module level. Workflow doesn't have it built in. A consumer can be written to a WF topic and based on an event, some appropriate action can be taken. |
MUST allow the execution of a workflow process based on a “flow-trigger” |
| To be handled by the business module |
SHOULD allow integration with messaging channels |
|
|
MUST support sending messages between different organizations |
| This is handled at a business module level |
MUST support sending messages within one organization between different organizational units |
| What does this mean? |
MUST provide a monitoring dashboard that allows an administrator user to view the existing processes and instances, the status of all instances, the health of the system generally, &c. |
| DIGIT has a dashboard service that can be setup/configured to show WF status etc.. |
MUST have an OpenIAM compatible API for user/privilege provisioning |
| Authorization is handled at a platform level, not at a workflow level. Therefore, workflow along with MDMS/Zuul can be considered a building block in DIGIT. |
MUST allow an administrator to “enable” or “disable” specific processes which will then appear in the BB API spec: “/api/process” LIST for discovery |
| We can mark a WF as inactive and it won't show up in the list. |
MUST allow an administrator to view and manage all workflow processes (both active and inactive) from their interface |
| We don't have a specific admin UI built-in but this can be written as an enhancement to Workflow |
API Compliance
APIs | Description | DIGIT compliance | Comments |
List processes. (GET) /processes | Retrieves the list of workflow process deployed on the workflow engine. Provides for each process the information: definition ID, version, status (active/suspended) |
| There is no global view of all workflows at a platform level because of performance and other considerations. |
Get individual process definition. (GET) /processes/{processId} |
|
|
|
Instantiate a process instance. (POST) /processes/{processId}/start | Instantiates a given process definition Id. Responds with instance UUID.Process variables (just a PAYLOAD object - process, should be able to extract from the payload JSON object attributes) may be supplied in the request body. If the start event has mandatory variables, the workflow engine will perform backend validation. |
|
|
**List process instances. **(GET) /instances | Retrieves the list of running process instances for a given workflow process definition ID |
|
|
**Get Instances workflow process by ID **(GET) /instances?processId=123 | Get the status of an existing process instance by instance ID. (GET) /instances/{instanceId}. Retrieves the status of a single process instance given an instance ID |
|
|