Process API - quandis/qbo3-Documentation GitHub Wiki
Process is a generic concept that applies to business processes as diverse as mortgage foreclosures, bankruptcies, insurance claims or health care visits.
The process module manages a business process, which can share several characteristics:
- It has open and closed dates and a reasons
- It may be outsourced to a third party (including secure extranet access)
- It tends to be active for more than a day
- It often requires workflow(s) to be launched as part of execution
- It may benefit from some sort of analysis / modelling
- It will often incur costs during it's lifecycle
- It can be active simultaneously with other business processes
Why Create Processes?
In the FinTech world, it is tempting to create origination, servicing, collection, default, and other such workflows bound to a loan or account. For simple use cases, this works just fine. Keep in mind, however, that if a workflow is bound to an account, then:
- Tasks created will be bound to the account
- Documents created will be bound to the account
- Child workflows will also be bound to the account
This gets complicated when you start launching simultaneous workflows, such as two insurance claims, a new credit application at the same time as an account renewal, or a foreclosure alongside a short sale. Documents created for short sales are mixed with the documents created for a foreclosure. Tasks created to manage the insurance claim A are intermingled with tasks for claim B. Imaging a manila folder used to store all account information in: one folder contains all of your documents, checklists, and yellow sticky notes from all of the departments 'touching' the account. In short, itโs easy to confuse your end users.
Creating a process enables binding a workflow to the process, instead of the account. The fat manila folder representing your account now has thinner folders (processes) inside of it, one for each insurance claim, credit renewal, short sale, etc. Each process is self-contained, so a short sale processor can focus on just the tasks and documents that impact him, while a claims adjuster can focus on just the tasks and documents that impact her.
As always, managers can review everything from the account level. The Process Dashboard enables managers to quickly see their active processes, including fetching exactly the bucket of processes their interested in viewing.
Classes
| Class | Description |
|---|---|
| Contract | Manage contractual relationships with organizations that perform work on processes. |
| ContractProduct | Define which ProcessTemplates a contract applied to. |
| Process | Store and track data associated with an instance of a business process. |
| ProcessTemplate | Template the behavior of a process, including creation of workflows, ledgers and scores. |
Key properties of the Process class (and all classes that derive from Process) include:
- Date Opened: the date the process was opened
- Opened Reason: the reason the process was opened
- Date Closed: the date the process was closed
- Closed Reason: the reason the process was closed
- Assigned Person: user managing the process
- Assigned Organization: vendor the process is outsourced to
- Current Decision: the workflow launched by the process
- Current Score: the score used to measure the ROI of the process
- Current Ledger: the ledger being used to track the costs associated with the process
The Process module may be extended with Siblings, which are classes that extend the Process module. For example, the Mortgage module includes Process-based modules including Foreclosure, Bankruptcy, ShortSale, Eviction, BidAtSale, and more.
Processes and Workflows
When a Process is created, it will create child objects, potentially including a workflow. When defining a Process Template, one can pick a Decision Template that defines which workflow to launch when the process is created. For more complicated situations, a matrix can be used to determine which workflow to launch.
To create a Process:
-- Create a Contract Negotiation process for OrganiztaionID 1
Process/Save?Object=Organization&ObjectID=1&Template=Contract Negotiation
-- Generic signature
Process/Save?Object={Parent Class}&ObjectID={Parent ID}&Template={Process Template name}
Processes and Referral Tasks
Frequently, a Process is intended to be a child of something else, such as an Organization or Property. When defining a ProcessTemplate, the ProcessTemplate.ParentObject is used to identify the appropriate parent. (From the standard user interface, this is the Applies To form element.)
If you want to enable users to add a Process and it's ParentObject simultaneously, you must create a Task to facilitate entry of the ParentObject properties:
| Property | Description |
|---|---|
ParentObject |
The task template's ParentObject must be Process, or some module derived from Process (such as Auction or Bankruptcy). |
Type |
The task template's Type column must be Referral. |
For example, to add a Contract Negotiation process while creating it's parent Organization record at the same time, create a Task Template as follows:
Template:New Company and ContractParentObject:ProcessType:Referral
Within the task, you can create Questions that bind to the parent fields.
Restarting a Process
Restarting a process will do the following:
- Cancel the current workflow (
Process.CurrentDecisionID) - Create a new workflow, with the
ActualStartdate specified - Add a message (subject '{Process} Restarted', with a body 'Foo'), bound to the process
Process/Restart?ActualStart=1/1/2017&BodyText=Foo