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 the current version of BPMN, BPMN 2.0, released in January 2011. BPMN is a big standard, and we currently support a good and useful subset, but – like most BPMN engines – 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 here.
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: 19c or higher. We have moved this up from 12.2 in Flows for APEX v22.2 because we found the JSON handling in the 12.2 release was unreliable for large tasks, such as parsing complex BPMN diagrams.
APEX: 20.2 or higher.
- For User Tasks of type “APEX Approval”, APEX 22.1 or higher is required.
- In general, the latest current release is recommended, especially for new development projects.
Does Flows for APEX run on Oracle Cloud Infrastructure (OCI)?
Yes. Flows for APEX should work on any APEX release. We do most of our development on OCI.
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!
How is Flows for APEX licensed?
Flows for APEX is available under an MIT licence.
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. The approval step itself can be implemented by yourself or you can use the APEX Approval Task (introduced in APEX 22.1). Flows for APEX can be used to create multi-level, conditional, or arbitrarily complex approval cycles - either as the process, or as part of a much larger business process.
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! If loops start inside a parallel section of the process, they should complete inside that section – loops that jump back outside the parallel section can be difficult to complete!
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 APEX Automations (APEX 20.2+) to start a process monthly - just have it call the
flow_api_pkg.create_processprocedure when it triggers. With Flows for APEX 23.1, there is a process plugin available so that you can do this without having to write any code. (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 Flows for APEX app, containing the Flow Management (managing diagram versioning and version release control, diagram creating & editing tool), and Flow Monitor page for monitoring/administrating flow instances, would be used for process designers / developers and for 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). Be aware that by giving access to the app, the user is allowed to execute any given PL/SQL with the privileges of the APEX workspace schema!
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. Thi. 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+ supports 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 there are APEX process plugins supplied with Flows for APEX (v21.1+) 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.
Does that mean I need to write lots of PL/SQL code in my APEX application?
No. While Flows for APEX has a simple PL/SQL API, described above, it also ships with a number of APEX Plugins. When yo copy these into your application, you can then manage most / all of your interactions with Flows for APEX using declarative configuration via the plugins. No need to write api code - we’ve done that for you inside the plugins!
How do I see the open tasks for a user?
We provide a prebuilt view called FLOW_TASK_INBOX_VW which exposes process instances that are currently at an user tasks. By the way, this view is also to be used when utilizing the viewer plugin if you want end-users to display the current state of a specific process instance.
And if you are using APEX 22.1 or later, incorporating the APEX Unified Task List, you can combine your Flows for APEX Tasks with the APEX Approval Tasks into a single, combined task list. The Task List is generated for you by a page wizard in APEX; Adapting it for Flows for APEX tasks just requires a few, simple edits.
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).