System and Method for Integrating External Services into Process Workflow Environments
A system and method are provided for integrating external services into process workflow environments. The method can include subscribing to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain. The method can also include subscribing to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice and detecting an incoming message published to a first topic by a first external microservice. The method can also include sending the incoming message to the first topic of the internal domain, detecting an outgoing message from the first topic or a second topic of the internal domain, and publishing the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
Latest The Toronto-Dominion Bank Patents:
- Systems and methods for synchronization of data
- Server device, non-transitory computer readable medium, and method for managing multiple transactional workflows
- System and method for handling real-time transactional events
- System and method for automatically determining privacy settings for sharing data
- SYSTEM AND METHOD FOR PROVIDING REAL-TIME UPDATES OF CHEQUE COLLECTION IN A CHEQUE CLEARING PROCESS
This application is a continuation-in-part of U.S. patent application Ser. No. 17/248,060 filed on Jan. 7, 2021, the entire contents of which are incorporated herein by reference.
TECHNICAL FIELDThe following relates generally integrating external services into process workflow environments.
BACKGROUNDAs digital systems and user or process requirements for these systems become more complicated and demanding, business process management becomes more challenging and complicated to implement. It is typically found that few (if any) existing tools are capable of adapting to generic and intrinsic items normally required in these business processes. For example, a business process may require sequential checks, gates, and approvals as well as data enrichment, aggregation, and appending. These tasks can require customized programming and can increase complexities in the end product or service. Other challenges can be introduced because of document parsing, document matching, data distribution and transmission, time series analyses, and web publishing.
Embodiments will now be described with reference to the appended drawings wherein:
It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the example embodiments described herein. However, it will be understood by those of ordinary skill in the art that the example embodiments described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the example embodiments described herein. Also, the description is not to be considered as limiting the scope of the example embodiments described herein.
It is found that many items in a business process can be generic and intrinsic to several processes and applications, particularly within an organization. These can include, for example, business process management, sequential checks/gates/approvals, data enrichment/aggregation/appending, document parsing, document matching, data distribution and transmission, time series analyses, web publishing, etc. Mapping microservices for such business functions can facilitate cross-skill understanding and development. Moreover, this can provide modularity that allows future challenges and opportunities to be met quickly and efficiently using agnostic microservices that can be used to flexibly onboard functional extensions or changes to a process.
A state machine system or “platform” is described herein, which abstracts process orchestration from the user via a state machine and provides a user interface (UI) design tool to allow a business-function oriented approach to workflow design and representation as a graph. The systems described herein can include a streaming distribution and routing layer that offers a normalized paradigm for function integration and onboarding, and includes multiple tiers for resiliency, performance and recovery. The system can rely on a number of functional business services, which can be implemented as microservices.
With this system, a business process can be created and stored as a graph. Also, the system can employ dynamic routing, functional declarations for application onboarding, and a standard integration paradigm to facilitate federated building of a microservice layer. The system can also persist messages in a queue and employ a database for message recovery. The UI on top of the system provides for low- or no-code implementation of a process from building blocks associated with the graph structure.
The following generally relates to executing process workflows, e.g., in implementing a digital application, in particular for designing, implementing, and executing business process workflows using a workflow graph stored in a graph database.
Certain example systems and methods described herein are able to integrate external services into a process workflow. In one aspect, there is provided a device for integrating external services into process workflow environments. The device includes a processor, a communications module coupled to the processor, and a memory coupled to the processor. The memory stores computer executable instructions that when executed by the processor cause the processor to subscribe to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain. The computer executable instructions, when executed, also cause the processor to subscribe to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice and detect an incoming message published to a first topic by a first external microservice. The computer executable instructions, when executed, also cause the processor to send the incoming message to the first topic of the internal domain, detect an outgoing message from the first topic or a second topic of the internal domain, and publish the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
In another aspect, there is provided a method of integrating external services into process workflow environments. The method includes subscribing to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain. The method also includes subscribing to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice and detecting an incoming message published to a first topic by a first external microservice. The method also includes sending the incoming message to the first topic of the internal domain, detecting an outgoing message from the first topic or a second topic of the internal domain, and publishing the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
In another aspect, there is provided a non-transitory computer readable medium for integrating external services into process workflow environments. The computer readable medium includes computer executable instructions for subscribing to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain. The computer readable medium also includes instructions for subscribing to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice and detecting an incoming message published to a first topic by a first external microservice. The computer readable medium also includes instructions for sending the incoming message to the first topic of the internal domain, detecting an outgoing message from the first topic or a second topic of the internal domain, and publishing the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
In certain example embodiments, the method can also include saving state information to a state service to persist changes to the topics while executing a process workflow.
In certain example embodiments, the internal messages can be detected by subscribing to an internal message broker that is configured to route messages within the internal domain. The internal message broker can be stateless and the method further include saving state information to a state service to persist changes to the topics while executing a process workflow. The internal message broker can subscribe to topics in the internal domain from all non-service tasks to be notified of internal messages.
In certain example embodiments, the topics can be arranged into a plurality of subprocesses. The first and second topics can be part of separate subprocesses.
In certain example embodiments, the topics can have corresponding workflow tasks that have been translated for a process workflow environment from a workflow graph to a file and data interchange format. The workflow graph can be translated from a business process model and notation (BPMN) format to a JavaScript object notation (JSON) file and data interchange format.
In certain example embodiments, the first external microservice publishes a data intake task.
In certain example embodiments, the first external microservice publishes a service task.
As used herein a “build” may refer to the process of creating an application program for a software release, by taking all the relevant source code files and compiling them and then creating build artifacts, such as binaries or executable program(s), etc. “Build data” may therefore refer to any files or other data associated with a build. The terms “build” and “build data” (or “build file”) may also be used interchangeably to commonly refer to a version or other manifestation of an application, or otherwise the code or program associated with an application that can be tested for performance related metrics.
The application build data 18 can include any computer code and related data and information for an application to be deployed, e.g., for testing, execution or other uses. The application build data 18 can also include any computer code and related data and information for a business process workflow implemented by the business process platform 22. In this example, the application build data 18 can be provided via one or more repositories and include the data and code required to perform application testing on a device or simulator.
The application testing environment 10 may include or otherwise have access to one or more repositories or other data storage elements for storing application test data 20, which includes any files, reports, information, results, metadata or other data associated with and/or generated during a test implemented within the application testing environment 10.
The computing environment 8 may be part of an enterprise or other organization that both develops and tests applications and/or designs and implements business process workflows. In such cases, the communication network 14 may not be required to provide connectivity between the application development environment 12, the application testing environment 10, and business process platform 22, wherein such connectivity is provided by an internal network. The application development environment 12, application testing environment 10, and/or business process platform 22, may also be integrated into the same enterprise environment as subsets thereof. That is, the configuration shown in
One example of the computing environment 8 may include a financial institution system (e.g., a commercial bank) that provides financial services accounts to users and processes financial transactions associated with those financial service accounts. Such a financial institution system may provide to its customers various browser-based and mobile applications, e.g., for mobile banking, mobile investing, mortgage management, etc.
Users of applications or business processes described herein may be referred to as customers, clients, correspondents, or other entities that interact with the enterprise or organization associated with the computing environment 8 via one or more apps or workflows (which may employ one or more apps). Such users typically interact with the environment 8 using client communication devices. It may be noted that such client communication devices may be connectable to the application deployment environment 16, e.g., to download newly developed apps, to update existing apps, etc. In certain embodiments, a user may operate the client communication devices such that client device performs one or more processes consistent with what is being developed or tested in the disclosed embodiments. For example, the user may use client device to engage and interface with a mobile or web-based banking application which has been developed and tested within the computing environment 8 as herein described. In certain aspects, client communication devices can include, but are not limited to, a personal computer, a laptop computer, a tablet computer, a notebook computer, a hand-held computer, a personal digital assistant, a portable navigation device, a mobile phone, a wearable device, a gaming device, an embedded device, a smart phone, a virtual reality device, an augmented reality device, third party portals, an automated teller machine (ATM), and any additional or alternate computing device, and may be operable to transmit and receive data across communication networks such as the communication network 14 shown by way of example in
Communication network 14 may include a telephone network, cellular, and/or data communication network to connect different types of client devices. For example, the communication network 14 may include a private or public switched telephone network (PSTN), mobile network (e.g., code division multiple access (CDMA) network, global system for mobile communications (GSM) network, and/or any 3G, 4G, or 5G wireless carrier network, etc.), WiFi or other similar wireless network, and a private and/or public wide area network (e.g., the Internet).
Referring back to
In
The editor module 30 can be used by a developer/programmer to create and edit program code associated with an application being developed. This can include interacting with the version and access control manager 32 to control access to current build files and libraries 34 while enforcing permissions and version controls. The compiler 36 may then be used to compile an application build file and other data to be stored with the application build data 18. It can be appreciated that a typical application or software development environment 12 may include other functionality, modules, and systems, details of which are omitted for brevity and ease of illustration. It can also be appreciated that the application development environment 12 may include modules, accounts, and access controls for enabling multiple developers to participate in developing an application, and modules for enabling an application to be developed for multiple platforms. For example, a mobile application may be developed by multiple teams, each team potentially having multiple programmers. Also, each team may be responsible for developing the application on a different platform, such as Apple iOS or Google Android for mobile versions, and Google Chrome or Microsoft Edge for web browser versions. Similarly, applications may be developed for deployment on different device types, even with the same underlying operating system.
While not shown in
In this example embodiment, the application development environment 12 can include a business process workflow UI 24 that can integrate or interface with the editor module 30 to enable business process workflows to be designed and integrated with an application that is being developed. The business process workflow UI 24 can also be connectable to the business process platform 22 to allow business process workflows to communicate and/or integrate with application functionality both within an application or between multiple applications.
In
Mobile application server 64 supports interactions with a mobile application installed on client device (which may be similar or the same as a test device). Mobile application server 64 can access other resources of the enterprise system 60 to carry out requests made by, and to provide content and data to, a mobile application on client device. In certain example embodiments, mobile application server 64 supports a mobile banking application to provide payments from one or more accounts of user, among other things.
Web application server 66 supports interactions using a website accessed by a web browser application running on the client device. It can be appreciated that the mobile application server 64 and the web application server 66 can provide different front ends for the same application, that is, the mobile (app) and web (browser) versions of the same application. For example, the enterprise system 60 may provide a banking application that be accessed via a smartphone or tablet app while also being accessible via a browser on any browser-enabled device.
The client data 68 can include, in an example embodiment, financial data that is associated with users of the client devices (e.g., customers of the financial institution). The financial data may include any data related to or derived from financial values or metrics associated with customers of a financial institution system (i.e., the enterprise system 60 in this example), for example, account balances, transaction histories, line of credit available, credit scores, mortgage balances, affordability metrics, investment account balances, investment values and types, among many others. Other metrics can be associated with the financial data, such as financial health data that is indicative of the financial health of the users of the client devices.
An application deployment module 72 is also shown in the example configuration of
It will be appreciated that only certain modules, applications, tools and engines are shown in
It will also be appreciated that any module or component exemplified herein that executes instructions may include or otherwise have access to computer readable media such as storage media, computer storage media, or data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information, and which can be accessed by an application, module, or both. Any such computer storage media may be part of any of the servers or other devices in the application testing environment 10, application development environment 12, business process platform 22, enterprise system 60, or accessible or connectable thereto. Any application or module herein described may be implemented using computer readable/executable instructions that may be stored or otherwise held by such computer readable media.
Referring to
Also shown in
Referring now to
The platform 22 in the configuration shown in
The management service 102 is also configured to store the workflow graphs in such a workflow graph database 106. A navigation service 108 can load a workflow graph instance from the graph database 106, translate the graphical representation to task-based messages (as described below), and interact with a routing service 110 to determine and execute the next workflow task as also described in greater detail below. The routing service 110 queries the navigation service 108 for the next workflow task according to the graph. The routing service 110 also interfaces with a distribution cluster 112 to egress or ingress a topic and coordinate with one or more federated microservices 116.
The distribution cluster 112 can also use the routing service 110 to subscribe to ingress the topic for the current task such that the routing service 110 receives a document for the current task. Here, the state of the workflow is given by the topic position. The routing service 110 also updates the document and publishes a workflow state change egress topic for the current task, e.g., by attaching a dynamic routing header.
The distribution cluster 112 includes or otherwise accesses a state service 114 (e.g., using Pulsar functionality) to map the external ingress to internal ingress topics as well as to map the internal egress to external egress topics. The state service 114 also validates and logs the published document and the workflow state change in a database server 104 that is accessed by the management service 102 to display the currently executing workflow as noted above.
The distribution cluster 112 is coupled to a set of federated microservices 116 to provide the flexibility of onboarding functional microservices for extensions. For example, web publication, time series tools, and real-time monitoring can be onboarded. These microservices 116 can also be leveraged in other workflows, providing modularity to an organization that employs the system across a number of business workflows. The distribution cluster 112 interacts with the federated microservices 116 to enable a client to subscribe to egress a topic. The client can also post from the federated microservices 116 to the distribution cluster 112 to ingress a topic.
Examples of such microservices that can be utilized by a financial institution include, without limitation: payments, money transfer generation, wire enrichment, credit/liquidity service, fraud/anti-money laundering, accounting service, limits management, supplemental income routing service , business rules and reference management, approval service, alerts/email service, reconciliation service (matching), and document generation.
The federated microservices 116 can include a gateway 118 to communicate with external systems 120 as needed as well as to communicate with an integration service 122 in the platform 22. The integration services 122 can communicate with external source systems 124 such as external web services, drop copy services and external databases to allow external systems to publish documents. Similarly, the integration service 122 can pick up data from a files dropped to a drop copy service or from a database.
Referring now to
The decision service 132, management service 102 and navigation service 108 communicate with the integration and distribution layer 136 by connecting to an integration sub-layer 138 via a software development kit (SDK) 140 that permits external microservices 116 to be integrated into a process workflow as described in greater detail later. The external microservices 116 can include REST API, database, connector, and file share services from external source systems 124, for example. The SDK 140 is coupled to an admin service 142 at the integration sub-layer 138 to enable administrator access to the SDK 140 and microservices 116.
The integration and distribution layer 136 also includes a routing sub-layer 144. The routing sub-layer 144 provides a messaging and routing platform using a message broker 146 such as RabbitMQ, which subscribes to the integration sub-layer 138 via the SDK 140. The message broker 146 is coupled to the routing service 110 to execute task-based routing as described in greater detail later. The message broker 146 is also coupled to the integration service 122, which bridges the integration and routing sub-layers 138, 144. For performance efficiency, the message broker 146 can be stateless in which case messages handled by the message broker 146 in conjunction with the routing service 110 and the state of the workflow are not stored in the routing sub-layer 144. To provide persistence for the messages, the message broker 146 is coupled to a state service 114 in a persistence sub-layer 148. The state service 114 can adopt bitemporal modeling in order to handle historical data along two different timelines to make it possible to “rewind” the information to as it actually was in combination with as it was recorded at some point in time. This enhances process workflows that circle back to previous tasks and previous states to ensure that the data being reprocessed has the history as it was “as-of” that time.
For additional performance considerations, including a high volume of messaging over the platform 22, the state service 114 can utilize a state query service 150 to write data to the database server 104 in the persistence infrastructure 154. As shown in
As shown in
The navigation service 108 and the routing service 110 operate using the underlying message broker 146 to perform task-based messaging and routing on the business process platform 22 to implement a process workflow that is based on the process workflow being designed and stored as a graph. Referring to
Referring to
A binary decision task is shown in
Custom send tasks can also be utilized, which are specialized send tasks with a custom implementation that can follow a pattern such as:
<customTaskType>:<CUSTOM_TASK_CONFIG>.
Referring now to
As discussed above, processes or tasks or services can subscribe to a named destination by implementing a publish-subscribe messaging protocol. For example, Process A can publish a message that is sent to processes that subscribe to that message, e.g., where Process Bn each receives the same message.
A messaging and routing architecture example is shown in
The routing example illustrated in
Referring now to
The internal domain 228 handles internal routing while the external domain 226 handles the external routing to enable external microservices 116 to publish for intake and service tasks as well as to receive messages from the platform 22. The integration service 122 interfaces with the external domain 226 to subscribe to external topics from such intake and service tasks and to be notified of incoming messages from the microservices 116. The integration service 122 also subscribes to the internal topics from service tasks within the internal domain 228 to be notified of outgoing messages handled by the routing service 110. The routing service 110 subscribes to the internal topics from all non-service tasks to be notified of internal messages. Clients of the business process platform 22 publish and subscribe to the message broker 146 via the SDK 140. To account for the stateless routing of the platform 22, the integration service and routing service 110 are coupled to the state service 114 as illustrated in
Referring to the specific routing example shown in
After executing the service task, microservice x.b publishes for that service task to Topic x.c.3 in the external domain 226 via the SDK 140, such that the integration service 122 is notified of recordid=3. As with the intake task, the integration service 122 routes a message with recordid=4 to Topic x.c.3 in the internal domain 228 and saves recordid=4 to the database server 104 via the state service 114. The routing service 110 is notified of recordid=4 by having subscribed to Topic x.c.3 in the internal domain 228 and determines that an internal message recordid=5 is to be routed internally to Topic a.x.3 to complete the process flow.
As illustrated in
The state command service 152, which operates as a writer service disassembles data and information persisted in the database server 104 into the raw pieces that are assembled by the reader service. The state command service 152 can operate using “push” semantics such as HTTP POST/PUT/PATCH/DELETE or GraphQL Mutation commands. The state command service 152 responds to write requests for objects and states and can write temporal data using a historized database schema as described below.
The state service 114 and persistence sub-layer 148 can employ a command query responsibility segregation model, which is the notion that a system can use a different model to update information than the model uses to read information. This can include employing bifurcated object models and bifurcated logical processes. The separation allows for targeted scaling that may be required based on read versus write workloads. The write requests can be serialized through the message broker 146 without losing data. The service pair can also be considered to provide eventual consistency on the application layer and strong consistency on the data layer. The service model described herein enables the system to create new object structures without compilation, allows object structures to be polymorphic at runtime, provides data integrity (e.g., ACID properties in SQL), provides a full normalization that removes data duplication and data anomalies, and provides support for temporal queries delivered by the underlying database engine.
The bitemporal support also allows for querying of the “quantum” properties as-of a certain time. This enables data dictionaries to evolve without violating in-flight records. The bitemporal support allows the business process platform 22 to readily track where what is used, to answer queries such as which data dictionaries use a particular field, which workflows are using a particular email template, what records have gone through a particular task, what tasks did a record go through, etc.
The service model used by the state service 114 utilizes metadata or a data dictionary to define a schema for a record as described below and can use polymorphism or dynamic typing such that different instances of the same category of objects can have different runtime properties. The service model can also provide nested custom types (e.g., embed an instrument to a trade), lists (e.g., embed observation dates for an option), and composable types (e.g., embed a cash flow schedule to a swap). The service model can also provide dynamic and contextual metadata to allow properties to have different underlying metadata (e.g., a default value can apply to some properties but not others and/or the type of the “default value” can also be with respect to the field type). By having bitemporal access to data, the state service 114 can provide information that is true “as of” a given data and time. The state service 114 can also provide information that is true at a given point in a workflow process graph stored in the workflow graph database 106 by relying on the business process platform's definition of a workflow, task and record.
Referring now to
A quantum 250 in this data model is the object, entity or thing and is a named instantiation of a quantum type 252. A quantum 250 can be described by the characteristics that make up the object and the characteristics of its quantum type 252. Each characteristic is a quantum property 254, which is also of a quantum type 252 and defines the cardinality of values that can be assigned to it (e.g., 0, 1 . . . ). A quantum type 252 is a unique name that identifies a category of objects, such as type, field, record, data dictionary, workflow, task configuration, task, email template, service configuration, comments, etc.
The quantum state 256 is an object in observation and is created when a quantum acquires information (i.e., a quantum property gets set with a value). The acquired information is recorded in a state vector 258. A state vector 258 records the value assigned to a quantum property 254 for the quantum state 256. Such property values can either be a primitive (e.g., string/int/Boolean/double, etc.) or a quantum state reference. A quantum state 256 has a state vector 258 per quantum property 254 and multiple quantum states 256 can share the same state vector 258.
As illustrated in
Turning to
By utilizing a graph structure for the business process workflow, the topic (issued via the distribution cluster 112) implies the state and thus processes do need to be linear. This graphical representation also permits graphs to be chained together, allowing for sub-flows as discussed above. Documents in the process can pass through the workflow via the graph edges to microservices and users that receive and/or interact with the document (e.g., to add a signature).
Referring to
At block 306 the workflow state change(s) can also be published with a topic for the current workflow task. This implies the state of the state machine implemented by the business process platform 22 and allows operations associated with the workflow to be controlled and implemented, e.g., having a document signed, verifying a payment, etc. At block 308 a document for the current workflow task, such as a form being filled out or a transaction being completed is received or otherwise handled by the business process platform 22. At block 310, at least one workflow task is executed by instructing a corresponding microservice 116. It can be appreciated that blocks 304, 306, 308, and 310 can be done in parallel or linearly depending on the configuration of the workflow and by storing the workflow as a graph the execution of the workflow is not constrained by a linear flow. That is, multiple workflow topics or tasks can be implemented in parallel without departing from the progression of the workflow being executed.
It will be appreciated that the examples and corresponding diagrams used herein are for illustrative purposes only. Different configurations and terminology can be used without departing from the principles expressed herein. For instance, components and modules can be added, deleted, modified, or arranged with differing connections without departing from these principles.
The steps or operations in the flow charts and diagrams described herein are just for example. There may be many variations to these steps or operations without departing from the principles discussed above. For instance, the steps may be performed in a differing order, or steps may be added, deleted, or modified.
Although the above principles have been described with reference to certain specific examples, various modifications thereof will be apparent to those skilled in the art as outlined in the appended claims.
Claims
1. A device for integrating external services into process workflow environments, the device comprising:
- a processor;
- a communications module coupled to the processor; and
- a memory coupled to the processor, the memory storing computer executable instructions that when executed by the processor cause the processor to: subscribe to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain; subscribe to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice; detect an incoming message published to a first topic by a first external m icroservice; send the incoming message to the first topic of the internal domain; detect an outgoing message from the first topic or a second topic of the internal domain; and publish the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
2. The device of claim 1, wherein the computer executable instructions further cause the processor to:
- save state information to a state service to persist changes to the topics while executing a process workflow.
3. The device of claim 1, wherein the outgoing messages from the internal domain are detected by subscribing to an internal message broker that is configured to route messages within the internal domain.
4. The device of claim 3, wherein the internal message broker is stateless and wherein the computer executable instructions further cause the processor to:
- save state information to a state service to persist changes to the topics while executing a process workflow.
5. The device of claim 3, wherein the internal message broker subscribes to topics in the internal domain from all non-service tasks to be notified of internal messages.
6. The device of claim 1, wherein the topics are arranged into a plurality of subprocesses.
7. The device of claim 6, wherein the first and second topics are part of separate subprocesses.
8. The device of claim 1, wherein the topics have corresponding workflow tasks that have been translated for a process workflow environment from a workflow graph to a file and data interchange format.
9. The device of claim 8, wherein the workflow graph is translated from a business process model and notation (BPMN) format to a JavaScript object notation (JSON) file and data interchange format.
10. The device of claim 1, wherein the first external microservice publishes a data intake task.
11. The device of claim 1, wherein the first external microservice publishes a service task.
12. A method of integrating external services into process workflow environments, the method comprising:
- subscribing to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain;
- subscribing to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice;
- detecting an incoming message published to a first topic by a first external microservice;
- sending the incoming message to the first topic of the internal domain;
- detecting an outgoing message from the first topic or a second topic of the internal domain; and
- publishing the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
13. The method of claim 12, further comprising:
- saving state information to a state service to persist changes to the topics while executing a process workflow.
14. The method of claim 12, wherein the outgoing messages from the internal domain are detected by subscribing to an internal message broker that is configured to route messages within the internal domain.
15. The method of claim 14, wherein the internal message broker is stateless and the method further comprising:
- saving state information to a state service to persist changes to the topics while executing a process workflow.
16. The method of claim 14, wherein the internal message broker subscribes to topics in the internal domain from all non-service tasks to be notified of internal messages.
17. The method of claim 12, wherein the topics are arranged into a plurality of subprocesses.
18. The method of claim 12, wherein the topics have corresponding workflow tasks that have been translated for a process workflow environment from a workflow graph to a file and data interchange format.
19. The method of claim 18, wherein the workflow graph is translated from a business process model and notation (BPMN) format to a JavaScript object notation (JSON) file and data interchange format.
20. A non-transitory computer readable medium for integrating external services into process workflow environments, the computer readable medium comprising computer executable instructions for:
- subscribing to one or more topics in an external domain coupled to at least one external microservice to be notified of incoming messages, the topics in the external domain being mapped to topics in an internal domain coupled to a message broker for routing messages within the internal domain;
- subscribing to the one or more topics in the internal domain to be notified of outgoing messages to the at least one external microservice;
- detecting an incoming message published to a first topic by a first external microservice;
- sending the incoming message to the first topic of the internal domain;
- detecting an outgoing message from the first topic or a second topic of the internal domain; and
- publishing the outgoing message to the first external microservice or another external microservice via a corresponding topic in the external domain.
Type: Application
Filed: Apr 23, 2021
Publication Date: Jul 7, 2022
Patent Grant number: 11743350
Applicant: The Toronto-Dominion Bank (Toronto)
Inventors: Joseph Vincent SCARFUTTI (Brooklyn, NY), Christian Caberoy DE LA PEÑA (Chester, NY), Aneesha Suresh BULCHANDANI (Hoboken, NJ)
Application Number: 17/302,089