What is BPMN?
Business Process Model and Notation is a graphical representation for specifying business processes in a business process model. Originally developed by the Business Process Management Initiative, BPMN has been maintained by the Object Management Group since the two organizations merged in 2005. Although it is an OMG specification, BPMN is also ratified as ISO19510.
What Version of BPMN do you support?
Flows for APEX is based on version 2.0 of BPMN, released in January 2011. BPMN is a big standard, and we currently support a good and useful subset, but not all of the standard.
How do I learn more about BPMN?
Working through the Flows for APEX tutorial workflows is one way to get started. They are included in the distributed product, and also hosted on apex.oracle.com (see: https://apex.oracle.com/pls/apex/r/mtflows/flows4apex).
For deeper understanding of BPMN, we’d recommend the following books:
- Real-Life BPMN (4th ed): Includes an Introduction to DMN* by Jakob Freund and Bernd Rücker. Available in hardcopy or on kindle from Amazon. (English and German versions available).
- BPMN Method and Style (2nd ed): by Bruce Silver. Available in hardcopy or on kindle from Amazon.
Contact the Flows for APEX team if you want to arrange training or consulting support for your Flows for APEX development project. These can be arranged online or, once the pandemic situation permits, on-site.
What versions of Oracle and Oracle APEX do you support?
Database: Minimum 12.2
APEX: Minimum 20.1.
Could this be used as a replacement for the old Oracle Workflow?
Probably. However, we haven’t done any feature comparison with Oracle Workflow. You should check all of the features that you used in Oracle Workflow and decide if these can be supported or not. We are aware of some projects that are switching from Oracle Workflow to Flows for APEX. Please share with us if you do!
BPMN Support / Modeling Issues
What kind of approval mechanisms can be built into a process flow?
The Flows for APEX modeler allows you to create any sort of approval mechanism or hierarchy, using the graphical process designer. The limit here is your ability to model in BPMN.
Can I have a loop in my process?
Yes, it’s perfectly possibly and often normal to have a process that loops. But do make sure that the loop has a realistic end case! And be careful that loops don’t spawn extra process subflows on each loop that need action to close!
Can I set a process to run at a scheduled time of the month?
You can do this several ways.
- You could have your process start with a Timer Start Event.
- You could create your own DBMS_SCHEDULER job that created and started a process every month.
- You could use the APEX 20.2 new feature APEX Automations to start a process monthly - just have it call the
flow_api_pkg.create_processprocedure when it triggers. (This is probably the best approach for repeated, long term scheduled starts).
BPMN Viewer Plugin
Is the BPMN Viewer restricted to any specific BPMN framework?
The Flows for APEX BPMN Flow Viewer displays a BPMN diagram that was created by the Flows for APEX Flow Modeler, which uses a bpmn.io component for displaying the provided XML (BPMN) file. We haven’t tested this using BPMN files generated by other BPMN frameworks as such, but if your XML file is BPMN compliant this should work. We’d recommend that you redraw your diagram using the Flows for APEX Flow Modeler, using the built in BPMN linting tool, to avoid any problems with incompatibilities or syntax that we don’t currently support.
Flows for Apex (Flow Modeler & Flow Monitor) App
Would you normally make this application available to all your end users?
The Flow for APEX app, containing the Flow Management (managing diagram versioning and version release control, diagram creating & editing tool), and Flow Monitor page for flow instances, would be used for process designers / developers and for the process administrators. Users only need to see their normal application, and you wouldn’t want them to be modifying the process models or controlling execution of process instances outside of an application. You could give them visibility of the process map showing them where they are in the process, and which steps are completed or not, by including the Flows for APEX BPMN Viewer plugin into your end application(s).
Is it possible to support other diagramming tools?
If the tools provide a BPMN-conformant XML most things should work. However you would be missing out on the APEX-specific things we put on top of bpmn.io. And a process model of any real complexity is likely to use process variables, which are implemented differently in any run time environment, and APEX-specific syntax – so we strongly recommend re-building your process diagrams using the Flows for APEX Modeler. This. shouldn’t be an onerous task on most projects.
Process versioning is a big factor in our workflow process. How does Flows for APEX support this? 🆕
Versioning of process diagrams is important as users start to move into production usage. Business processes evolve, and a process engine needs to support that. Flows for APEX V5.1 introduces process versioning for those who need it.
- Process diagrams are initially saved with a status of ‘draft’ and a version of ‘0’.
- A ‘draft’ diagram can be edited and re-saved. It can be run.
- If you are using versioning, you can promote a diagram to a status of ‘released’. Only one version of a model can have released status at any one time. By default, running a model specifying its name only, will run the ‘released’ version of a model.
- If a previous ‘released’ version of the model exists when a new version is promoted to ‘released’ status, the older version changes its status to ‘deprecated’. Any process instances that were started with the now deprecated version, will continue to execute using the deprecated version that they were started with.
- New process instances can only be started using a model in ‘draft’ status (for testing, or if you’re not using versioning) or in ‘released’ status. ‘deprecated’ or ‘archived’ status models cannot be used to start new process instances.
- A copy of any version can be made, which can be edited and form the basis of a new version of a model.
- The Flow Management page of the Flows for APEX app is used to create, release, and manage the various versions of a process diagram that might exist.
How does the Version Numbering work?
Version numbers are a free-text tag, so that users can create whatever versioning naming / numbering scheme. they need. You will find it easier if your version numbering scheme sorts the way you expect it to!
Flows for APEX API
How do I call the Flows for APEX API from my application?
Flows for APEX has a simple PL/SQL API that controls interaction with the flow engine. In addition, starting in V21.1, there are APEX process plugins supplied with Flows for APEX that handle all of these calls for you in an APEX application. See documentation on the Plugins.
The Flows for APEX API is a simple PL/SQL API that allows you to do the following things:
- create a process instance.
- start a (previously created) process instance.
the process progression calls:
- optionally, to signal work is starting on the current task (this is just used for performance management, to distinguish between waiting time and work time on each step).
- optionally, to reserve the current step (signaling to other users that you are going to do that step).
- optionally, to release an existing reservation for the current step.
- to complete the current step (and thus moving to the next step).
- reset a process instance (not normally performed during production running, but useful during process development, testing or (carefully) process admin.
- terminate a process (halting processing on a process at its current position, and completing the process as-is).
- delete a process.
How do I see the open tasks for a user or lane?
We provide a prebuilt view called FLOW_TASK_INBOX_VW which exposes currently available user tasks. We will add more doc on this in the next few weeks.
How do I find out more about the API?
Take a look at our API documentation page.
Is there a way to do a ‘flow_previous_step’ or undo a step?
We don’t currently provide an undo function in the API, and as a step could have performed and committed a transaction in the database, it would be hard to do that. It’s also not straightforward to drive a BPMN model backwards! One way to meet a requirement like this would be to support what are called Compensation Events in a BPMN model - which allows you to specify a process flow for cancelling or rolling back a previously-executed process flow. We don’t have plans to implement compensation events at present, but it could be done without too much difficulty ( - and like all community projects, if you want to add a feature, you are very welcome to support it by either donating time to develop it, or by sponsoring development of the feature by some of the existing team).