I’ve reviewed a lot of BPM systems, and one of the most common weak points is in developing the part of the process application that isn’t generated from the process model: user interfaces, data models, security, business logic and integration with legacy systems. Some of this is improving, with the addition of graphical forms builders for UI, and integration of business rules engines, but these are typically the places where you have to drop out of that lovely BPMS environment and write some Java UI code, or hand-craft a data model. Although the process models might be easy to change, as soon as you start writing code, your BPMS turns from agile to brittle.
BPMS vendors tend to focus on process modeling and generating an executable process from that model first, then later tack on features to expand into a full application development suite. OutSystems has taken the opposite approach: they’re an Agile application development suite vendor that’s adding business process management as a feature in their application development toolkit.
Backing up a bit, OutSystems makes a model-driven application development suite called Agile Platform, that allows for rapid development of web-based applications that involve complex system integration and rich user interfaces. Headquartered in Portugal, they developed a strong European customer base before entering the North American market in 2007, and helped boost adoption by offering a free community edition. Agile Platform manages the whole application lifecycle: following the model-driven development, you deploy and manage your applications directly from it, and there are tools for collecting user feedback directly within the executing applications to feedback to the developers for potential changes.
With Agile Platform 5.0, released earlier this week, they’ve added business processes to the application development mix. Since their product is targeted at developers, their process modeler isn’t for a non-technical business analyst: it’s a capability within the model-driven application development environment, just like data modeling and UI development. Other application artifacts, such as screens, can be integrated with the process to show the the interrelationship between the process and application.
The process modeler isn’t BPMN, but a simple flowchart format without swimlanes, and with a small but adequate set of flow elements: start, conditional start, human activity, automated activity, execute process, send email, wait, decision, end and comment. The start event may be triggered by user input on a form or by some simple events include database triggers, but there are no intermediate or end events. Since you’re working in an integrated application development environment, there are data modeling tools allowing you to create the process instance data model and view it as an entity-relationship diagram: this is just part of the overall application data model, and treated as such. Similarly, you can create a user interface, drag fields onto it from the data model, add the screen flow logic, and bind it to a step in the process. If you want a quick demo, there’s a screencam on their site showing how to build a business process in 30 minutes (although it only runs 9 minutes since there’s some fast-forwarding through the boring bits).
The process and application are deployed as a single unit for execution, since the process is just an extension of the application. Agile Platform generates and compiles standard .NET or Java code from the models, updates databases with the data models and deploys the code on the application servers in a single step. If you want to stop using Agile Platform at some point, you can take the generated source code (which looks pretty clean) and work directly with it. Since this executes as compiled code, it’s fairly efficient: they reported one of their beta customers as having 16 high-level processes with more than 200 activities each, and 3.8 million activities in flight at any given time.
An interesting user interface feature is that if you’re anywhere in the application/portal and you have uncompleted tasks, you’ll see a little floating box showing a counter of your incomplete tasks; click on it to list the tasks, then click on one to open and process it. After completion, you’re automatically returned to where you were in the portal before processing the task. That means that occasional process participants don’t need to keep checking their process inbox to see if they have tasks assigned to them.
They’ve also included a predefined analytical model for process reporting and have some monitoring capabilities in the enterprise edition, although I didn’t see that during the briefing.
To be clear, Agile Platform does not offer full BPMS functionality: there’s no true orchestration, no event handling (aside from a few start events), and no process reusability. Their intention is to provide “good enough” process management for primarily human-facing processes, in the context of a web-based business application. The application is primary; process is just another feature of the application. Although process-centric BPM types might recoil in horror from that idea since it violates the idea of end-to-end processes independent of applications, this is how many businesses view things: users think about performing a function in the CRM application without much awareness that they are participating in the order-to-cash process, and developers want a single application lifecycle to manage for both applications and related processes.
The opposite of BPMS vendors who have been building (often substandard) application development environments to extend their process modeling and execution, Agile Platform adds process modeling and execution to a robust application development environment. They have a proven track record in doing application development right; it remains to be seen if they’re doing BPM right as well.
It is always an honor to see OutSystems platform receiving praise.
As one of the responsible for the platform design I would just like to clear a few ideas about the process layer:
1-Processes can be used and reused in other processes like any other modulation tool;
2-Events in the OutSystems platform are a critical communication mechanism between applications and processes (or between processes), the reason why they are not so evident in the demos is because they are thrown by the application (not at the process level), and captured by generic Wait Activities, and Human Activities;
3-The reduced set of BPM elements and features (e.g. no visual swimlanes) was a design decision to simplify the modeling and execution language, as we try very hard to make it as unambiguous and accessible as possible.
Anyway, the most important idea is ‘to provide “good enough” process management for primarily human-facing processes, in the context of a web-based business application.’ This is exactly what we are constantly asked for by our customers, and I’m glad to see they are not alone 🙂
Regards,
Lúcio Ferrão
OutSystems R&D
Hi Lucio, thanks for your comment. I was told during the briefing that process activities were reusable, but processes were not. If that’s not accurate, then I’d be happy to see more about this. As for event handling, I assumed that it was done in the application, not in the process, but that’s exactly my point: there is little or no event handling *in the process* — I may not have been clear on what I meant when I discussed event handling.
There is a basic difference between secuential workflow and BPM. The type of business scenarios that are handled by a (good) BPMS are too many to mention, but let’s not confuse the readers that a simple secuential workflow is called a BPM system!
Hi Sandy,
Thanks for the feedback. I’ll make sure the this information is correctly delivered in the future.
Anyway, we have just published a document that maps BPMN 1.2 concepts into the Agile Platform language elements: http://www.outsystems.com/NetworkForums/ViewTopic.aspx?Topic=Agile-Platform-for-users-of-BPMN
It’s a great starting point to understand how to model processes in our platform if you are familiar with the standards. It should also help clearing the questions you raised.
One thing I forgot to mention in my first feedback was an orchestration note. An orchestration specifies an executable process that involves message exchanges with other systems. In the Agile Platform, the orchestration is usually designed with processes, and the messages are trivially exchanged using Web Services, custom integrations, existing databases. Am I missing something?
Massimo, in my 2nd-to-last paragraph, I was clear to state that this does NOT offer full BPMS functionality, although it does offer some of the functions that you will find in a full-featured BPMS.
I’m not sure why you categorize this as “sequential workflow”, what is your reason for that?
As usual Sandy you are absolutely correct in your analysis. As someone who has been instrumental in building real world BPM technology based applications we noticed this too. We rapidly build the processes and the forms but users still need a more focussed application rather than a generic worklist in many cases. RSS driven worklists etc work well but in many cases users like to see application specific UIs to get their job done. While some BPMs have started to move slowly along those lines (like Appian) it still becomes necessary to build applications as rapidly as you build the process using the suites. We have used RAD tools like Wavemaker and integrated them with traditional BPM suites. Out Systems looked real good and we have some engineers using this in the labs. I would like if this RAD environment were integrated with some BPM suites. Any BPM suite vendor care to comment?
Arni, could you share some info about wavemaker and BPM integration.