Search in sources :

Example 1 with AbstractFlowNodeBuilder

use of io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder in project zeebe by camunda.

the class ActivateJobsTest method shouldActivateJobsFromProcess.

@Test
public void shouldActivateJobsFromProcess() {
    // given
    final int jobAmount = 10;
    final String jobType = taskType;
    final String jobType2 = Strings.newRandomValidBpmnId();
    final String jobType3 = Strings.newRandomValidBpmnId();
    AbstractFlowNodeBuilder<?, ?> builder = Bpmn.createExecutableProcess(PROCESS_ID).startEvent("start");
    for (final String type : Arrays.asList(jobType, jobType2, jobType3)) {
        builder = builder.serviceTask(type, b -> b.zeebeJobType(type));
    }
    ENGINE.deployment().withXmlResource(PROCESS_ID + ".bpmn", builder.done()).deploy();
    final List<Long> processInstanceKeys = createProcessInstances(jobAmount, "{}");
    // when activating and completing all jobs
    waitForJobs(jobType, jobAmount, processInstanceKeys);
    activateJobs(jobType, jobAmount).forEach(this::completeJob);
    waitForJobs(jobType2, jobAmount, processInstanceKeys);
    activateJobs(jobType2, jobAmount).forEach(this::completeJob);
    waitForJobs(jobType3, jobAmount, processInstanceKeys);
    activateJobs(jobType3, jobAmount).forEach(this::completeJob);
    // then all process instances are completed
    assertThat(processInstanceRecords(ProcessInstanceIntent.ELEMENT_COMPLETED).withBpmnProcessId(PROCESS_ID).filter(r -> processInstanceKeys.contains(r.getKey())).limit(jobAmount).count() == processInstanceKeys.size());
}
Also used : IntStream(java.util.stream.IntStream) Arrays(java.util.Arrays) JobBatchRecordValue(io.camunda.zeebe.protocol.record.value.JobBatchRecordValue) ProcessInstanceIntent(io.camunda.zeebe.protocol.record.intent.ProcessInstanceIntent) InstanceOfAssertFactories(org.assertj.core.api.InstanceOfAssertFactories) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) JobRecordValue(io.camunda.zeebe.protocol.record.value.JobRecordValue) Bpmn(io.camunda.zeebe.model.bpmn.Bpmn) Function(java.util.function.Function) Record(io.camunda.zeebe.protocol.record.Record) Strings(io.camunda.zeebe.test.util.Strings) Duration(java.time.Duration) Map(java.util.Map) EngineRule(io.camunda.zeebe.engine.util.EngineRule) BpmnModelInstance(io.camunda.zeebe.model.bpmn.BpmnModelInstance) AbstractFlowNodeBuilder(io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder) ClassRule(org.junit.ClassRule) Before(org.junit.Before) ControlledActorClock(io.camunda.zeebe.util.sched.clock.ControlledActorClock) RecordingExporter.jobBatchRecords(io.camunda.zeebe.test.util.record.RecordingExporter.jobBatchRecords) RecordingExporter.jobRecords(io.camunda.zeebe.test.util.record.RecordingExporter.jobRecords) Awaitility.await(org.awaitility.Awaitility.await) JobBatchIntent(io.camunda.zeebe.protocol.record.intent.JobBatchIntent) Assertions.assertThat(io.camunda.zeebe.protocol.record.Assertions.assertThat) Test(org.junit.Test) Assertions.entry(org.assertj.core.api.Assertions.entry) RecordingExporterTestWatcher(io.camunda.zeebe.test.util.record.RecordingExporterTestWatcher) Collectors(java.util.stream.Collectors) RandomString(org.assertj.core.internal.bytebuddy.utility.RandomString) RecordingExporter(io.camunda.zeebe.test.util.record.RecordingExporter) List(java.util.List) Rule(org.junit.Rule) RejectionType(io.camunda.zeebe.protocol.record.RejectionType) TestUtil.waitUntil(io.camunda.zeebe.test.util.TestUtil.waitUntil) RecordingExporter.processInstanceRecords(io.camunda.zeebe.test.util.record.RecordingExporter.processInstanceRecords) ByteValue(io.camunda.zeebe.util.ByteValue) JobIntent(io.camunda.zeebe.protocol.record.intent.JobIntent) RandomString(org.assertj.core.internal.bytebuddy.utility.RandomString) Test(org.junit.Test)

Example 2 with AbstractFlowNodeBuilder

use of io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder in project zeebe by camunda.

the class SubProcessBlockBuilder method buildFlowNodes.

@Override
public AbstractFlowNodeBuilder<?, ?> buildFlowNodes(final AbstractFlowNodeBuilder<?, ?> nodeBuilder) {
    final SubProcessBuilder subProcessBuilderStart = nodeBuilder.subProcess(subProcessId);
    AbstractFlowNodeBuilder<?, ?> workInProgress = subProcessBuilderStart.embeddedSubProcess().startEvent(subProcessStartEventId);
    if (embeddedSubProcessBuilder != null) {
        workInProgress = embeddedSubProcessBuilder.buildFlowNodes(workInProgress);
    }
    final var subProcessBuilderDone = workInProgress.endEvent(subProcessEndEventId).subProcessDone();
    AbstractFlowNodeBuilder result = subProcessBuilderDone;
    if (hasBoundaryEvents) {
        final BoundaryEventBuilder boundaryEventBuilder = new BoundaryEventBuilder(subProcessId, subProcessBuilderDone);
        if (hasBoundaryTimerEvent) {
            result = boundaryEventBuilder.connectBoundaryTimerEvent(subProcessBoundaryTimerEventId);
        }
    }
    return result;
}
Also used : AbstractFlowNodeBuilder(io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder) SubProcessBuilder(io.camunda.zeebe.model.bpmn.builder.SubProcessBuilder)

Example 3 with AbstractFlowNodeBuilder

use of io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder in project zeebe by zeebe-io.

the class SubProcessBlockBuilder method buildFlowNodes.

@Override
public AbstractFlowNodeBuilder<?, ?> buildFlowNodes(final AbstractFlowNodeBuilder<?, ?> nodeBuilder) {
    final SubProcessBuilder subProcessBuilderStart = nodeBuilder.subProcess(subProcessId);
    AbstractFlowNodeBuilder<?, ?> workInProgress = subProcessBuilderStart.embeddedSubProcess().startEvent(subProcessStartEventId);
    if (embeddedSubProcessBuilder != null) {
        workInProgress = embeddedSubProcessBuilder.buildFlowNodes(workInProgress);
    }
    final var subProcessBuilderDone = workInProgress.endEvent(subProcessEndEventId).subProcessDone();
    AbstractFlowNodeBuilder result = subProcessBuilderDone;
    if (hasBoundaryEvents) {
        final BoundaryEventBuilder boundaryEventBuilder = new BoundaryEventBuilder(subProcessId, subProcessBuilderDone);
        if (hasBoundaryTimerEvent) {
            result = boundaryEventBuilder.connectBoundaryTimerEvent(subProcessBoundaryTimerEventId);
        }
    }
    return result;
}
Also used : AbstractFlowNodeBuilder(io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder) SubProcessBuilder(io.camunda.zeebe.model.bpmn.builder.SubProcessBuilder)

Example 4 with AbstractFlowNodeBuilder

use of io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder in project zeebe by zeebe-io.

the class ActivateJobsTest method shouldActivateJobsFromProcess.

@Test
public void shouldActivateJobsFromProcess() {
    // given
    final int jobAmount = 10;
    final String jobType = taskType;
    final String jobType2 = Strings.newRandomValidBpmnId();
    final String jobType3 = Strings.newRandomValidBpmnId();
    AbstractFlowNodeBuilder<?, ?> builder = Bpmn.createExecutableProcess(PROCESS_ID).startEvent("start");
    for (final String type : Arrays.asList(jobType, jobType2, jobType3)) {
        builder = builder.serviceTask(type, b -> b.zeebeJobType(type));
    }
    ENGINE.deployment().withXmlResource(PROCESS_ID + ".bpmn", builder.done()).deploy();
    final List<Long> processInstanceKeys = createProcessInstances(jobAmount, "{}");
    // when activating and completing all jobs
    waitForJobs(jobType, jobAmount, processInstanceKeys);
    activateJobs(jobType, jobAmount).forEach(this::completeJob);
    waitForJobs(jobType2, jobAmount, processInstanceKeys);
    activateJobs(jobType2, jobAmount).forEach(this::completeJob);
    waitForJobs(jobType3, jobAmount, processInstanceKeys);
    activateJobs(jobType3, jobAmount).forEach(this::completeJob);
    // then all process instances are completed
    assertThat(processInstanceRecords(ProcessInstanceIntent.ELEMENT_COMPLETED).withBpmnProcessId(PROCESS_ID).filter(r -> processInstanceKeys.contains(r.getKey())).limit(jobAmount).count() == processInstanceKeys.size());
}
Also used : IntStream(java.util.stream.IntStream) Arrays(java.util.Arrays) JobBatchRecordValue(io.camunda.zeebe.protocol.record.value.JobBatchRecordValue) ProcessInstanceIntent(io.camunda.zeebe.protocol.record.intent.ProcessInstanceIntent) InstanceOfAssertFactories(org.assertj.core.api.InstanceOfAssertFactories) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) JobRecordValue(io.camunda.zeebe.protocol.record.value.JobRecordValue) Bpmn(io.camunda.zeebe.model.bpmn.Bpmn) Function(java.util.function.Function) Record(io.camunda.zeebe.protocol.record.Record) Strings(io.camunda.zeebe.test.util.Strings) Duration(java.time.Duration) Map(java.util.Map) EngineRule(io.camunda.zeebe.engine.util.EngineRule) BpmnModelInstance(io.camunda.zeebe.model.bpmn.BpmnModelInstance) AbstractFlowNodeBuilder(io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder) ClassRule(org.junit.ClassRule) Before(org.junit.Before) ControlledActorClock(io.camunda.zeebe.util.sched.clock.ControlledActorClock) RecordingExporter.jobBatchRecords(io.camunda.zeebe.test.util.record.RecordingExporter.jobBatchRecords) RecordingExporter.jobRecords(io.camunda.zeebe.test.util.record.RecordingExporter.jobRecords) Awaitility.await(org.awaitility.Awaitility.await) JobBatchIntent(io.camunda.zeebe.protocol.record.intent.JobBatchIntent) Assertions.assertThat(io.camunda.zeebe.protocol.record.Assertions.assertThat) Test(org.junit.Test) Assertions.entry(org.assertj.core.api.Assertions.entry) RecordingExporterTestWatcher(io.camunda.zeebe.test.util.record.RecordingExporterTestWatcher) Collectors(java.util.stream.Collectors) RandomString(org.assertj.core.internal.bytebuddy.utility.RandomString) RecordingExporter(io.camunda.zeebe.test.util.record.RecordingExporter) List(java.util.List) Rule(org.junit.Rule) RejectionType(io.camunda.zeebe.protocol.record.RejectionType) TestUtil.waitUntil(io.camunda.zeebe.test.util.TestUtil.waitUntil) RecordingExporter.processInstanceRecords(io.camunda.zeebe.test.util.record.RecordingExporter.processInstanceRecords) ByteValue(io.camunda.zeebe.util.ByteValue) JobIntent(io.camunda.zeebe.protocol.record.intent.JobIntent) RandomString(org.assertj.core.internal.bytebuddy.utility.RandomString) Test(org.junit.Test)

Example 5 with AbstractFlowNodeBuilder

use of io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder in project zeebe by camunda-cloud.

the class SubProcessBlockBuilder method buildFlowNodes.

@Override
public AbstractFlowNodeBuilder<?, ?> buildFlowNodes(final AbstractFlowNodeBuilder<?, ?> nodeBuilder) {
    final SubProcessBuilder subProcessBuilderStart = nodeBuilder.subProcess(subProcessId);
    AbstractFlowNodeBuilder<?, ?> workInProgress = subProcessBuilderStart.embeddedSubProcess().startEvent(subProcessStartEventId);
    if (embeddedSubProcessBuilder != null) {
        workInProgress = embeddedSubProcessBuilder.buildFlowNodes(workInProgress);
    }
    final var subProcessBuilderDone = workInProgress.endEvent(subProcessEndEventId).subProcessDone();
    AbstractFlowNodeBuilder result = subProcessBuilderDone;
    if (hasBoundaryEvents) {
        final BoundaryEventBuilder boundaryEventBuilder = new BoundaryEventBuilder(subProcessId, subProcessBuilderDone);
        if (hasBoundaryTimerEvent) {
            result = boundaryEventBuilder.connectBoundaryTimerEvent(subProcessBoundaryTimerEventId);
        }
    }
    return result;
}
Also used : AbstractFlowNodeBuilder(io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder) SubProcessBuilder(io.camunda.zeebe.model.bpmn.builder.SubProcessBuilder)

Aggregations

AbstractFlowNodeBuilder (io.camunda.zeebe.model.bpmn.builder.AbstractFlowNodeBuilder)6 EngineRule (io.camunda.zeebe.engine.util.EngineRule)3 Bpmn (io.camunda.zeebe.model.bpmn.Bpmn)3 BpmnModelInstance (io.camunda.zeebe.model.bpmn.BpmnModelInstance)3 SubProcessBuilder (io.camunda.zeebe.model.bpmn.builder.SubProcessBuilder)3 Assertions.assertThat (io.camunda.zeebe.protocol.record.Assertions.assertThat)3 Record (io.camunda.zeebe.protocol.record.Record)3 RejectionType (io.camunda.zeebe.protocol.record.RejectionType)3 JobBatchIntent (io.camunda.zeebe.protocol.record.intent.JobBatchIntent)3 JobIntent (io.camunda.zeebe.protocol.record.intent.JobIntent)3 ProcessInstanceIntent (io.camunda.zeebe.protocol.record.intent.ProcessInstanceIntent)3 JobBatchRecordValue (io.camunda.zeebe.protocol.record.value.JobBatchRecordValue)3 JobRecordValue (io.camunda.zeebe.protocol.record.value.JobRecordValue)3 Strings (io.camunda.zeebe.test.util.Strings)3 TestUtil.waitUntil (io.camunda.zeebe.test.util.TestUtil.waitUntil)3 RecordingExporter (io.camunda.zeebe.test.util.record.RecordingExporter)3 RecordingExporter.jobBatchRecords (io.camunda.zeebe.test.util.record.RecordingExporter.jobBatchRecords)3 RecordingExporter.jobRecords (io.camunda.zeebe.test.util.record.RecordingExporter.jobRecords)3 RecordingExporter.processInstanceRecords (io.camunda.zeebe.test.util.record.RecordingExporter.processInstanceRecords)3 RecordingExporterTestWatcher (io.camunda.zeebe.test.util.record.RecordingExporterTestWatcher)3