SugarCRM SupportProduct GuidesSugar DeveloperSugar Developer Guide 10.3ArchitectureSugarBPM
This release is only available for SugarCloud customers.

SugarBPM

Introduction

SugarBPM™ automation suite is the next-generation workflow management tool for Sugar. Introduced in 7.6, SugarBPM is loosely based on BPMN process notation standards and provides a simple drag-and-drop user interface along with an intelligent flow designer to allow for the creation of easy yet powerful process definitions.

Note: SugarBPM™ is not available for Sugar Professional.

SugarBPM enables administrators to streamline common business processes by managing approvals, sales processes, call triaging, and more. The easy-to-use workflow tool adds advanced BPM functionality to the core Sugar software stack.

A business process is a set of logically related tasks that are performed in order to achieve a specific organizational goal. It presents all of the tasks that must be completed in a simplified and streamlined format. SugarBPM empowers Sugar administrators, allowing for the automation of vital business processes for their organization. The SugarBPM automation suite features an extensive toolbox of modules that provide the ability to easily create digital forms and map out fully functioning workflows.

SugarBPM Modules

SugarBPM is broken down into four distinct modules, each with its own area of responsibility. Three of the four SugarBPM modules have access control settings that restrict its visibility to System Administrators, Module Administrators, and Module Developers.

Process Definitions

A process definition defines the steps in an overall business process. Process definitions are created by either a Sugar administrator, a module Administrator or a module Developer. The process definition consists of a collection of activities and their relationships, criteria to indicate the start and end of the process, and information about the individual activities (e.g., participants) contained within the business process.

Business Rules

A business rule is a reusable set of conditions and outcomes that can be embedded in a process definition. The set of rules may enforce business policy, make a decision, or infer new data from existing data. For example, if Sally manages all business opportunities of $10,000 or more, and Chris manages all business opportunities under $10,000, a business rule can be created and used by all relevant process definitions based on the same target module to ensure that the assignment policy is respected. In the case of an eventual personnel change, only the business rule will need to be edited to affect all related processes.

Email Templates

A process email template is required in order to include a Send Message event in a process definition. The SugarCRM core product includes several places where email templates can be created for different purposes, but SugarBPM requires all sent messages to be created via the Process Email Templates module.

Processes

A process is a running instance of a process definition. A single process begins every time a process definition meeting certain criteria is executed. For example, a single process definition could be created to automate quote approvals, but because users may engage in several quote approvals per day, each approval will be represented by a separate process instance, all governed by the single process definition.

Database Tables

Information surrounding various portions of SugarBPM can be found in the following SugarBPM database tables:

Table name Description
pmse_bpm_access_management This table is not used.
pmse_bpm_activity_definition Holds definition data for an activity. Maps directly to the pmse_bpmn_activity table and may, in the future, be merged with the pmse_bpmn_activity table to prevent forked data backends.
pmse_bpm_activity_step This table is not used.
pmse_bpm_activity_user This table is not used.
pmse_bpm_config This table is not used.
pmse_bpm_dynamic_forms Holds module specific form information - basically viewdefs for a module - for a process.
pmse_bpm_event_definition Holds definition data for an event. Maps directly to the pmse_bpmn_event table and may, in the future, be merged with the pmse_bpmn_event table to prevent forked data backends.
pmse_bpm_flow Holds information about triggered process flows as well as state of any process that is currently running.
pmse_bpm_form_action Holds information about a process that has been acted upon.
pmse_bpm_gateway_definition Holds definition data for a gateway. Maps directly to the pmse_bpmn_event table and may, in the future, be merged with the pmse_bpmn_gateway table to prevent forked data backends.
pmse_bpm_group This table is not used.
pmse_bpm_group_user This table is not used.
pmse_bpm_notes Holds notes saved for a process record.
pmse_bpm_process_definition Holds definition data for a process definition. Maps directly to the pmse_bpmn_process table and may, in the future, be merged with the pmse_bpmn_process table to prevent forked data backends.
pmse_bpm_related_dependency Holds information about dependencies related to an event
pmse_bpm_thread Holds information related to process threads for running processes.
pmse_bpmn_activity Please see pmse_bpm_activity_definition
pmse_bpmn_artifact Holds BPM artifact information, like Comments on a process diagram. At present, SugarBPM only supports the text annotation artifact.
pmse_bpmn_bound Data related to element boundaries on the diagram. 
pmse_bpmn_data This table is not used.
pmse_bpmn_diagram Data related to a process definition's diagram. 
pmse_bpmn_documentation This table is not used.
pmse_bpmn_event Please see pmse_bpm_event_definition
pmse_bpmn_extension This table is not used.
pmse_bpmn_flow Holds information about the connecting flows of a diagram.
pmse_bpmn_gateway Please see pmse_bpm_gateway_definition
pmse_bpmn_lane This table is not used.
pmse_bpmn_laneset This table is not used.
pmse_bpmn_participant This table is not used.
pmse_bpmn_process Please see pmse_bpm_process_definition
pmse_business_rules Holds business rule record data.
pmse_emails_templates Holds email template record data.
pmse_inbox Holds information about processes that are currently running or that have completed.
pmse_project Holds process definition record information.

Relationships

The following Entity Relationship Diagram highlights the relationships between the various SugarBPM tables.

SugarBPM<span id=-Relationships" width="1654" recordid="e3710de4-b5b1-11e6-a3de-005056bc231a" style="width: nullpx; height: NaNpx;" />

Flows

When a process definition is created the following 5 tables get populated:

  • pmse_bpm_dynamic_forms contains dyn_view_defs which is the JSON encoded string of module-specific form information
  • pmse_bpm_process_definition contains the module associated with and the status of a process definition
  • pmse_bpmn_diagram contains process definition name as well and a diagram uid
  • pmse_bpmn_process contains process definition name. The same Id is shared between pmse_bpm_process_definition and pmse_bpmn_process dia_id is a foreign key related to pmse_bpmn_diagram
  • pmse_project contains process definition name, project id, module, status. Other tables have a foreign key of prj_id in them.

Upon adding a start/end/send message event:

  • pmse_bpmn_event contains event name
  • pmse_bpm_event_definition Shares id with pmse_bpmn_event
  • pmse_bpmn_bound

When Settings is changed to "New Records Only"

  • pmse_bpm_related_dependency

Upon adding an action or activity:

  • pmse_bpm_activity_definition contains the action name
    • The act_fields column contains the JSON encoded list of fields which will be changed
  • pmse_bpm_activity contains action name. Shares id with pmse_bpm_activity_definition. act_script_type contains the type of action e.g. CHANGE_FIELD
  • pmse_bpmn_bound

Upon adding a connector between start event and action:

  • pmse_bpmn_flow contains origin and destination info

Upon adding a Gateway:

  • pmse_bpm_gateway_definition
  • pmse_bpm_gateway shares id with pmse_bpm_gateway_definition
  • pmse_bpmn_flow flo_condition contains JSON encoded string of conditions required to proceed ahead with an action or activity
  • pmse_bpmn_bound

When a process runs:

  • pmse_inbox cas_status indicates the status of a process
  • pmse_bpm_thread
  • pmse_bpm_flow Stores the entire flow that the process elements went through (so if 3 elements and 2 connectors are in the process definition then 5 records will exist)

After Process has run and appears in Process Management:

  • pmse_bpm_case_data
  • pmse_bpm_form_action contains frm_action,  cas_pre_data , and cas_data

Add a comment:

  • pmse_bpmn_artifact contains the comment
  • pmse_bpm_bound

Add a business rule to a process definition:

  • pmse_business_rules rst_source_definition contains the conditions of the business rule
  • pmse_bpm_activity_definition act_fields contains the business rule id

Add an email template to a process definition:

  • pmse_email_templates
  • pmse_bpm_event_definition evn_criteria contains the email template id

Extension and Customization

In Sugar 7.8, Sugar introduced the Process Manager library to support extending SugarBPM in an upgrade-safe way. For more information on extending SugarBPM, or on using the Process Manager library, please read the Process Manager documentation.

Caveats

In Sugar 7.8, the Process Manager library brought Registry Object to maintain the state of SugarBPM processes during a PHP Process. This change introduced a limitation in SugarBPM that prevents the same process definition from running on multiple records inside the same PHP process. For certain customizations in Sugar, if you are updating multiple records in a module using SugarBean, you may want them to trigger the defined process definitions for each record.

The following code can be added to your customization to allow for that functionality:

use Sugarcrm\Sugarcrm\ProcessManager\Registry;

//custom code

Registry\Registry::getInstance()->drop('triggered_starts');

$bean->save();

The 'triggered_starts' registry contains the Start Event IDs that have been triggered previously in the PHP process, thus allowing the SugarBean::save() method to trigger SugarBPM and go through the same Start Event again.

Topics

    From its earliest version, Sugar has been a tool that allows for customizing and extending in a way that allows developers to shape and mold it to a specific business need. Most components of Sugar are customizable or extensible through the use of custom classes (for custom functionality) or extensions (for custom metadata). However, a recent addition to the product, the SugarBPM™ automation suite, did not fit this paradigm. In response, the Process Manager Library was introduced to give developers the ability to customize any portion of SugarBPM where object instantiation was previously handled using the 'new' operator.

Last modified: 2021-01-06 23:28:41