Sun, Jan 19, 2020
Read in 3 minutes
Recently, I got an opportunity to work in a project to build an application using the business process management tool Alfresco. In this blog, I will explain the requirement and architecture design of the application what we built.
With a financial industry client, they follow a business process where team A should send all the artifacts to another team B. And team B is responsible to review all the documents and they have to approve or reject. This whole process has to be monitored by the other team C for compliance purposes. This process has manually happened, i.e sending all the artifacts in email and team A is waiting for approval from team B. So the client wants to build an application to automate this process.
As per these requirements, it will be easy if you use any BPMN tool (Business Process Management tool). So We decided to use the Alfresco activiti app.
The architecture of the application :
Angular UI has been built and deployed in tomcat server and alfresco activiti is a product build on java platform. So we got the activiti.war from the alfresco company and deployed that in a tomcat server.
When we are configuring the Activiti product, it asked for the SQL server and we provide the SQL server URL and access rights. http://docs.alfresco.com/activiti/docs/admin-guide/1.4.0/#_installing_the_alfresco_activiti_app
Once the Alfresco Activiti app deployed and configured with the tomcat server, we got the UI with a login screen and we used the default credentials and logged in.
Using Activiti app designer we build the entire workflow. The workflow was as below.
Workflow :
Alfresco documentation for workflows https://docs.alfresco.com/4.2/concepts/wf-whatis-workflow.html
When this workflow is created in activiti designer and published, this will be exposed as rest API.
You can explore all the rest API endpoints with the Alfresco documentation. https://docs.alfresco.com/process-services1.9/topics/process_services_api.html
User Interface :
Once the business workflow is created, we started designing the User interface screens.
Where Team A should have UI to start the process with some inputs so, We have created a form and click on submit the form, we call alfresco rest API to initiate the process. Once the process is initiated, a unique process instance id is generated.
Once the process started, As per workflow logic it creates a manual task for team A to upload the documents. So we developed angular UI to show the tasks assigned for this process and used rest endpoints to retrieve tasks for this process. Each and every task is created under a process (process instance id)will have a unique task-id. When the manual task is completed by Team A, it will trigger the manual task for Team B. So, we had different login for team B and Team B login will have a queue of all the Tasks. We developed the Team B login and UI interface to retrieve and display all the tasks created for team B.
Then the team B has to approve or reject the documents submitted by team A and if the manual task is completed then the workflow will trigger the mail to Team A.
Conclusion :
In this blog, I explained an application we built with alfresco Activiti product.