# Process driven messaging service

A process driven messaging service (PDMS) is a service that is process oriented and exchanges messages/data calls. A PDMS is a service where jobs and triggers can be put together to create a workflow for a message.
Messaging platforms are considered key Internet infrastructure elements. A concept that once mainly encompassed email and IM has evolved to embrace complex multi-media email, instant messaging, and related fixed and mobile messaging infrastructure. Arguably, everything transmitted on the Internet and wireless telecommunication links are messages.
PDMS exchanges messages for the purpose of all kind of messages/data calls between systems, applications and or human beings that is based upon event-driven process chains.

## Structure

A process driven messaging service is a service where jobs and triggers can be put together to create a workflow for a message and the workflow can be seen as a process.
A workflow is executed when a trigger is prompted. The trigger causes the activation of one or more jobs which can, in turn, execute more jobs. The workflow will still be active even when all jobs have been executed, but nothing occurs until it is re-triggered.

### Workflows

A workflow in PDMS is used to wrap triggers and/or jobs together to accomplish a flow of actions and events that can be invoked over and over again without repeating the configuration. A workflow is a container. A workflow process is a container for a group of workflow statuses and actions, such as moving a record from one status to another. Other than triggers and jobs, it can contain groups or artifacts. The items that can be contained in the workflow are then available to all triggers and jobs within the workflow.
The concept of a workflow can be seen as a template for either part of, or a whole, business process. Workflows can be triggered for a number of different reasons, an example of which could be if something were to happen in the domain or there were to be an explicit call to invoke.
The workflow will be in a state awaiting execution when the workflow, its triggers, and its jobs are active.
When created, workflows require the last job to be added first, meaning jobs are to be listed in reverse order of execution. Jobs and triggers also require the reverse sequential listing of orders when created.

### Jobs

A job creates something such as a task (e. g., sending a message) or affects Standard Objects (e.g. way metadata in a unit). It is a task describing what the system should do and can be several things. A job, when activated, can lead to the execution of another job (for instance: message delivery). It represents what a system does with the data, an activity within the system domain.
Jobs provide a means to encapsulate a process. A Job is a configuration representing input options, the steps in the process, a filter expression that matches the nodes where those steps will execute, and execution control parameters that specify if steps are run in parallel. One might find certain command executions are done repeatedly, and perhaps, represent what has become a routine procedure. Routine processes need to be encapsulated and become the basis for other routine procedures.

### Triggers

A trigger—what starts/executes a workflow—prompts the execution of actions. The object's components that define business logic and behavior are called triggers. You can create and configure any number of triggers to perform automated and programmatic validation, notification, data manipulation, and other activities upon record creation, updating, and deletion.

### Processes

A process starts at some point in the system. For example, when a trigger executes an instance of a workflow.
A process driven messaging service is often used when managing a more or less complex business processes.
With a well developed process driven messaging platform, all triggers and jobs can be exposed in a public API (application programming interface), and it will then be possible to create the process in the API.

## Technology/programming

PDMS is based upon Event-Driven Architecture whereas the architectural pattern may be applied by the design and implementation of applications and systems which transmit events among loosely coupled software components and services. Unlike traditional information systems which work by issuing requests and waiting for responses, event-driven systems are designed to process events as they occur, allowing the system to observe, react dynamically, and issue personalized data depending on the recipient and situation.

## Applicable areas

Areas where PDMS can be used are System to System, A2P with the difference that other message types can be included in the PDMS, Application to Application, System to Person, M2M and all kinds of messages/data calls between systems, applications and/or people based upon event-driven processes.