Releases: camunda-community-hub/eze
0.8.0
What's Changed
- build(deps): bump netty-bom from 4.1.72.Final to 4.1.73.Final by @dependabot in #88
- build(deps): bump slf4j-api from 1.7.32 to 1.7.33 by @dependabot in #89
- Add a standalone, containerized agent by @npepinpe in #91
- build(deps): bump zeebe-bom from 1.3.0 to 1.3.1 by @dependabot in #90
New Contributors
Full Changelog: 0.7.0...0.8.0
0.7.0
What's Changed
- build(deps): bump zeebe-bom from 1.2.4 to 1.2.5 by @dependabot in #68
- build(deps): bump flaky-test-extractor-maven-plugin from 2.0.3 to 2.0.4 by @dependabot in #67
- build(deps): bump netty-bom from 4.1.70.Final to 4.1.72.Final by @dependabot in #72
- build(deps): bump zeebe-bom from 1.2.5 to 1.2.6 by @dependabot in #73
- build(deps): bump log4j.version from 2.14.1 to 2.16.0 by @dependabot in #71
- build(deps): bump kotlin.version from 1.6.0 to 1.6.10 by @dependabot in #74
- build(deps): bump zeebe-bom from 1.2.6 to 1.2.7 by @dependabot in #76
- build(deps): bump log4j-core from 2.16.0 to 2.17.0 by @dependabot in #77
- build(deps): bump jackson.version from 2.13.0 to 2.13.1 by @dependabot in #78
- build(deps): bump jackson-bom from 2.13.0 to 2.13.1 by @dependabot in #79
- build(deps): bump snakeyaml from 1.29 to 1.30 by @dependabot in #75
- build(deps): bump zeebe-bom from 1.2.7 to 1.2.9 by @dependabot in #81
- build(deps): bump log4j.version from 2.17.0 to 2.17.1 by @dependabot in #80
- build(deps): bump assertj-core from 3.21.0 to 3.22.0 by @dependabot in #83
- build(deps): bump flaky-test-extractor-maven-plugin from 2.0.4 to 2.0.6 by @dependabot in #82
- build(deps): bump zeebe-bom from 1.2.9 to 1.3.0 by @dependabot in #84
- build(deps): bump protobuf-java from 3.19.1 to 3.19.2 by @dependabot in #85
- build(deps): bump scala-library from 2.13.7 to 2.13.8 by @dependabot in #86
- build(deps): bump protobuf-java from 3.19.2 to 3.19.3 by @dependabot in #87
Full Changelog: 0.6.1...0.7.0
0.6.1
What's Changed
- Do not reuse readers @Zelldon 949804a
- fix: Remove key from delete cache upon write by @remcowesterhoud in #66
Full Changelog: 0.6.0...0.6.1
0.6.0
What's Changed
- build(deps): bump kotlin.version from 1.5.31 to 1.6.0 by @dependabot in #60
- Close client in test and extension by @Zelldon in #62
Full Changelog: 0.5.0...0.6.0
0.5.0
What's Changed
- feat: Added filter options Timer Records by @Hard-Coder05 in #42
- ft: Added filter option for Process Instance Record Stream by @Hard-Coder05 in #50
- feat: Added filter option for Variable Record Stream by @Hard-Coder05 in #49
Dependencies
- build(deps): bump zeebe-bom from 1.2.1 to 1.2.4 by @dependabot
- build(deps): bump community-hub-release-parent from 1.2.1 to 1.2.2 by @dependabot in #51
- build(deps): bump awaitility-kotlin from 4.1.0 to 4.1.1 by @dependabot in #52
- build(deps): bump jackson.version from 2.12.5 to 2.13.0 by @dependabot in #36
- build(deps): bump protobuf-java from 3.19.0 to 3.19.1 by @dependabot in #54
- build(deps): bump scala-library from 2.13.6 to 2.13.7 by @dependabot in #55
- build(deps): bump netty-bom from 4.1.69.Final to 4.1.70.Final by @dependabot in #57
- build(deps): bump error_prone_annotations from 2.9.0 to 2.10.0 by @dependabot in #59
New Contributors
- @Hard-Coder05 made their first contribution in #42
Full Changelog: 0.4.0...0.5.0
0.4.0
Changelog
- Update dependencies, e.g. update to Zeebe 1.2.1
- Add new filters for record stream
- #43 Thanks to @nitram509
- #46 Thanks to @remcowesterhoud
0.3.0
Changelog
Update dependencies, make them explicit (instead of transitive), enforce dependencies via plugin and exclude unused dependencies.
0.2.0
0.1.0
Embedded Zeebe engine
First release of the new shiny embedded zeebe engine. Supports normal java client usage, where the contact point is "0.0.0.0:26500".
Java Client support
You can either use an own simple client like:
val zeebeClient = ZeebeClient.newClientBuilder().usePlaintext().build()
Or get one from the engine:
val zeebeClient = zeebeEngine.createClient()
In memory
The embedded engine is completely in memory, which means the log storage and internal database have been replaced with in memory data structures. This allows to be more performant for unit and intergration tests, then the normal Zeebe broker.
Junit 5 Extension
The first version comes with an Junit 5 Extension, which is ready to use in your next Zeebe side project.
Example:
@EmbeddedZeebeEngine
class EzeExtensionTest {
private lateinit var client: ZeebeClient
@Test
fun `should complete process instance`() {
// given
val process = Bpmn.createExecutableProcess("process")
.startEvent()
.endEvent()
.done()
client.newDeployCommand()
.addProcessModel(process, "process.bpmn")
.send()
.join()
// when
val processInstanceResult = client.newCreateInstanceCommand()
.bpmnProcessId("process")
.latestVersion()
.variables(mapOf("x" to 1))
.withResult()
.send()
.join()
// then
assertThat(processInstanceResult.variablesAsMap)
.containsEntry("x", 1)
}
}
Time travel
The embedded engine supports a "Time travel API". This means you can play with the internal clock to be able to trigger timer events earlier.
zeebeEngine.clock().increaseTime(Duration.ofDays(1))
Records
One main benefit of this new embedded engine is the easy access to the records, which have been produced by the engine.
You can filter for certain record types and use that in your tests.
val processRecordds = zeebeEngine
.processInstanceRecords()
.withElementType(BpmnElementType.PROCESS)
.take(4)
It is not only possible to search and filter for records you can print all or a subset of existing records. Just call print()
on the returned record stream. This is used in the Junit 5 Extension to print the records, when a test fails. It will produce an output like this:
===== Test failed! Printing records from the stream:
11:01:50.415 [main] INFO io.camunda.zeebe.test - Compact log representation:
--------
['C'ommand/'E'event/'R'ejection] [valueType] [intent] - #[position]->#[source record position] P[partitionId]K[key] - [summary of value]
P9K999 - key; #999 - record position; "ID" element/process id; @"elementid"/[P9K999] - element with ID and key
Keys are decomposed into partition id and per partition key (e.g. 2251799813685253 -> P1K005). If single partition, the partition is omitted.
Long IDs are shortened (e.g. 'startEvent_5d56488e-0570-416c-ba2d-36d2a3acea78' -> 'star..acea78'
--------
C DEPLOYMENT CREATE - #1->-1 -1 -
E PROC CREATED - #2->#1 K1 - simpleProcess.bpmn -> "simpleProcess" (version:1)
E DEPLOYMENT CREATED - #3->#1 K2 - simpleProcess.bpmn
E DEPLOYMENT FULLY_DISTR - #4->#1 K2 -
-------------- Deployed Processes ----------------------
simpleProcess.bpmn -> "simpleProcess" (version:1)[K1] ------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<...>
--------------- Decomposed keys (for debugging) -----------------
-1 <-> -1
K1 <-> 2251799813685249
K2 <-> 2251799813685250
Disclaimer
This embedded engine should not be used on production. It is build for test and development usage. It is far from complete nor is it perfect. It is not fault tolerant, since it is completely in memory and supports only one partition.