Mastering BPT in OutSystems: A Guide to Efficient Design and Scalability

Business Process Management (BPM) technology is extensively used across various industries, particularly those involving complex logistics, approval flows, and integration of independent business flow orchestrations. Although Outsystems applications implementing Business Process Technology (BPT) are not widespread, I have encountered several such implementations over the years. These BPT implementations in Outsystems often face significant challenges, including poor performance, excessive complexity, problematic evolutionary maintenance, and a shortage of specialized developers. In some cases, clients have even abandoned BPT, removing it from their application altogether.

Given these issues, it is crucial to address them and provide effective solutions to enhance the longevity and maintenance of BPT designs and lifecycles. In my experience, several strategies have proven successful in improving BPT implementations, and I'll go over them in this article.

Exploring BPM and BPT: Key Concepts and Their Importance

Business Process Management (BPM) is a multifaceted discipline that employs diverse methods to discover, model, analyze, measure, improve, and optimize business processes. It encompasses a systematic approach aimed at enhancing the effectiveness and efficiency of these processes.

BPM tools are instrumental in creating this systematic approach. They facilitate the modeling, implementation, and automation of business workflows. The overarching goal of utilizing BPM tools is to bolster corporate performance. This enhancement is achieved by reducing errors, cutting down inefficiencies, and eliminating miscommunication within business operations.

BPT, or Business Process Technology, is closely related to BPM. It refers to the technology solutions and tools specifically designed to support the BPM discipline. BPT allows for the practical application of BPM strategies and methodologies within an organization’s technological framework. By integrating BPT solutions, businesses can more effectively implement, monitor, and evolve their process management strategies, leading to more dynamic and responsive operational models. This alignment of process management with technology not only streamlines workflows but also enables continuous process improvement in a rapidly changing business environment.

Designing a Simple and Scalable BPT Flow in OutSystems

Architecture

The starting point of an effective BPT flow is its architecture. Determining the business flow's main stages or statuses is crucial to ensure they're both intuitive and future-proof, even if not all are used in every process.

These primary stages or statuses will form the foundation of your main process flow. This flow is typically triggered by creating a record in your main entity marked with a unique identifier of your business flow or item.

Consider establishing a common Workflow App and Core App to facilitate scalable development and prevent the concentration of diverse teams and business flows in the same modules or apps. The specific implementations of distinct business flow steps should be distributed across other workflow and core apps.

My Common BPT App Workflow

This app should contain a single module, [moduleName]_WF, enclosing the main common flow. Once defined, this flow should only be modified to reference new logic from other workflows or update existing references.

 

Image 1 – An example of the main process inside the module

 

Additionally, each step should look something like the flow in Image 2.

Image 2 – the sub processes are referenced from other workflow modules/Apps.

My Common BPT App Core

It should have at least the following two modules:

  • [moduleName]Common_CS – containing basic CRUD logic, the core entity that triggers the primary BPT process, and other core common entities like your status tables and your BPT abstraction tables.

  • [moduleName]Common_BL – encapsulating common or orchestration business logic and other logic necessary for maintaining the abstraction data model.

Secondary BPT App’s Workflows

The secondary BPT apps should contain a single workflow module, [moduleName]_WF, with the public processes for each step (if applicable) referenced in the main workflow steps. There should be one different workflow for each vertical business line.

Secondary BPT App’s Cores

Each secondary BPT App should have at least the following two modules:

  • [moduleName]_CS – containing basic CRUD logic, the core entity extension table(s), with specific data for this business line, extending the primary entity that triggers the primary BPT process, and other core entities like your substatus tables.

  • [moduleName]_BL – containing logic specific to the business and other logic necessary for maintaining the abstraction (mainly the substatus updates) data model.

Data model, performance and longevity

Abstraction data model

While OutSystems BPT offers a solid foundation for business process management, there is room to elevate its capabilities through strategic adaptations. Optimizing indexing and shifting from Integer to Long Integer IDs for entities can take the platform's efficiency and scalability a step further, building on its already robust BPM framework.


 

Image 3 – Data Model

 

Suggested for You

Databases handle thousands or millions of records and must return results in milliseconds. Therefore, data fetching optimization is crucial. This article explains how to do it through indexes and their implementation in OutSystems.


Performance and Longevity

Consider creating and maintaining a tailored data model for improved BPM performance and longevity. Use Long Integer IDs and streamline the structure to include 2-3 essential entities, focusing on fields critical for your regular queries. This dedicated data model allows for more efficient index optimization tailored to your needs. This approach complements the existing BPT data model used by the OutSystems platform, enabling more effective handling of your unique application logic and user interface requirements while concurrently leveraging the robust capabilities of the OutSystems environment.

Updating your abstraction data model

As shown in image 2, the major status updates can be made using an automatic activity inside every step of the main common flow.

Since usually substatus are associated with human activities, you can store the substatus, activity id, activity status and definition id’s in the Human Activity events, OnReady, OnOpen, and OnClose.

 

Image 4 – OnReady, Updating the abstraction data model and the activity’s status associated with the current Substatus

 

Image 5 – Update the activity’s status associated with the current substatus on OnOpen and OnClose events

Closing

We trust you found value in this overview, offering essential insights for optimizing your BPT flows. This article skims the surface of what's possible with BPT and OutSystems, and there's much more to explore for deeper understanding and application. We encourage you to delve into our other articles and posts for more comprehensive insights and guidance. Should you require specialized assistance to fully leverage BPT technology and the OutSystems platform in your organization, don't hesitate to reach out to us. We're here to help you harness the full potential of these powerful tools for your business needs.

We encourage you to explore the resources listed below for more comprehensive insights and guidance on this subject.

 

Like this article? Share it:

Previous
Previous

Streamline your data: How to Integrate Google Sheets with OutSystems Applications

Next
Next

Unveiling the Importance of Security Testing in OutSystems Applications