We’re excited to announce the release of Zeebe 0.22.0-alpha1 and Operate 1.2.0-alpha1.
You can find information about how to get started with Zeebe and Operate in the docs.
In the rest of this post, we’ll cover highlights from the releases along with other project updates.
BPMN Support in Zeebe: Call Activity and Timer Event Subprocess
Zeebe 0.22.0-alpha 1 includes support for the BPMN call activity and timer event subprocess.
The call activity–or “reusable subprocess”–makes it possible to invoke another workflow as part of a process. The call activity is similar to an embedded subprocess, but the workflow being invoked is externalized (as in, it’s a separate BPMN file) and could be invoked by a range of different workflows.
Learn more about the call activity in Zeebe in the documentation.
The timer event subprocess (both interrupting and non-interrupting) makes it possible to trigger a subprocess based on a timer event.
The non-interrupting timer event subprocesses supports scenarios where a user wants to do something in parallel to the parent process on a regular interval (without adding the timer to a specific scope in the parent process) such as, for example, sending a status update.
The interrupting timer event subprocess supports scenarios where, for example, a user wants to implement a global timeout for a parent process. When the subprocess timer event is triggered, the parent process will be canceled and the subprocess initiated instead.
Support for the message event subprocess is planned for the next release.
Await Workflow Result in Zeebe
This is an exciting addition to Zeebe that’s often requested by users and was previewed by Zeebe developer advocate Josh Wulf in this blog post from late October.
This feature enables a use case where, for example, a workflow is started in response to a REST request, and the outcome from the workflow is sent back in the REST response.
You can learn more in the documentation.
Let’s walk through one example. For the simple workflow model shown above, here are three different ways to create a workflow instance…
- Without waiting for a result (the behavior prior to this release)
- Waiting for a result and fetching all variables (with just a single command)
- Waiting for a result and only fetching the
result
variable (with just a single command)
// just start instance and don't wait for result
$ zbctl create instance sum --variables '{"x": 12, "y": 324}'
{
"workflowKey": 2251799813685251,
"bpmnProcessId": "sum",
"version": 1,
"workflowInstanceKey": 2251799813685296
}
// wait for result and get all variables
$ zbctl create instance sum --variables '{"x": 12, "y": 324}' --withResult
{
"workflowKey": 2251799813685251,
"bpmnProcessId": "sum",
"version": 1,
"workflowInstanceKey": 2251799813685309,
"variables": "{"x":12,"y":324,"result":336}"
}
// only fetch result variable
$ zbctl create instance sum --variables '{"x": 12, "y": 324}' --withResult=result
{
"workflowKey": 2251799813685251,
"bpmnProcessId": "sum",
"version": 1,
"workflowInstanceKey": 2251799813685322,
"variables": "{"result":336}"
}
And lastly, a quick note on Operate: while we don’t have any user-facing features we’ll highlight here, the team made steady progress on user experience and scalability in their 1.2.0-alpha1 release.
New On The Blog
In addition to the aforementioned blog post on awaitable workflow outcomes, Josh shared a monitoring package for Node.js Zeebe applications, and Mauricio Salatino, our other Zeebe developer advocate, published a Getting Started with Zeebe on Kubernetes with Spring Boot guide.
Is there a Zeebe topic that you’d like to see explored more deeply in a blog post? Let our dev advocates know on Twitter!
Questions? Feedback?
If you have questions or comments about this release or anything Zeebe and Operate-related, we’d love to hear from you.
Head on over to the Zeebe user forum and let us know what’s on your mind.