Skip to content

Releases: camunda-community-hub/eze

0.8.0

21 Jan 09:10
Compare
Choose a tag to compare

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

12 Jan 10:17
Compare
Choose a tag to compare

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

01 Dec 13:24
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.6.0...0.6.1

0.6.0

19 Nov 22:02
Compare
Choose a tag to compare

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

10 Nov 06:34
Compare
Choose a tag to compare

What's Changed

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

Full Changelog: 0.4.0...0.5.0

0.4.0

22 Oct 07:36
Compare
Choose a tag to compare

Changelog

0.3.0

23 Aug 08:21
Compare
Choose a tag to compare

Changelog

Update dependencies, make them explicit (instead of transitive), enforce dependencies via plugin and exclude unused dependencies.

0.2.0

13 Aug 13:34
Compare
Choose a tag to compare

Changelog

  • (feat): create the Zeebe engine with exporters
  • (fix): write message subscription commands to correlate messages
  • (fix): write message records with variables

0.1.0

13 Aug 12:10
Compare
Choose a tag to compare

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)

Print

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.