DB Layer: This module will act as the component that makes data available to the Rest API and Workflow for consumption and will use Hibernate to keep the solution DB independent.
Authentication Layer: The authentication and authorization layer , uses Spring Security modules to define authentication mechanisms (OAuth, DB, etc) and define what Forms, Data and Rest API's are accessible to which component/user.
Workflow Layer: Drools based workflow capability that will be fired for 5 triggers when a record is
Multiple Records are Retrieved
(CRUDM) = Create, Retrieve, Update and Delete operations
the record data will be available for the workflow to manipulate/use.
The rest of the services will run as Microservices
Email Service: This module will provide the capability to send a email notification via a workflow action.
Similarly it will also allow for CRUD operations of data just by sending a email to this module.
This module will be able to perform these actions by acting like a SMTP/IMAP/POP3/MAPI client.
Approval Service: A service that will allow for writing Approval rules to provide for Automated OR Manual routing of approvals based on predefined rules before a state/data of the record is modified. This will use Drools Rule engine and a Visual interface to define rules.
Assignment Service: A service that determines who a record gets assigned to based on Assignment rules. This will use Drools Rule engine and a Visual interface to define rules.
Reporting Service: A service that will allow for creating and running interactive reports and allow for export of the same to various targets like PDF, Doc etc.
This will also allow for exporting a report at the specified schedule.
This will use a ODA driver and BIRT for reporting.
Plugin Service: This will allow for writing ones own plugins in Java (and possibly other languages later) that can be called from the workflow engine to extend the capabilities of the solution.
Form and Workflow Designer:
We would use grape.js to design a Form and Workflow Designer. The use of Angular UI components in the designer to show the final rendered UI will make it easier to have a standards based Designer.
More about UI Frontend and API gateway in the next post.