added TrackVars

This commit is contained in:
Andreas Isler
2026-06-12 09:50:45 +02:00
parent e7a235e835
commit 4f154e2e73
6 changed files with 105 additions and 64 deletions
@@ -0,0 +1,42 @@
package com.customer.work.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.flowable.eventregistry.api.EventRegistry;
import org.flowable.eventregistry.api.model.EventPayloadTypes;
import org.flowable.eventregistry.api.runtime.EventPayloadInstance;
import org.flowable.eventregistry.impl.runtime.EventInstanceImpl;
import org.flowable.eventregistry.impl.runtime.EventPayloadInstanceImpl;
import org.flowable.eventregistry.model.EventPayload;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
@Service
public class TaskListenerService {
private final EventRegistry eventRegistry;
private final ObjectMapper objectMapper;
public TaskListenerService(EventRegistry eventRegistry, ObjectMapper objectMapper) {
this.eventRegistry = eventRegistry;
this.objectMapper = objectMapper;
}
public void throwTaskListenerEvent(String rootCaseId, String eventKey, DelegateTask task, String message) {
ObjectNode jsonTask = objectMapper.createObjectNode();
jsonTask.put("modelId", task.getTaskDefinitionKey());
jsonTask.put("assignee", task.getAssignee());
jsonTask.put("name", task.getName());
Collection<EventPayloadInstance> instances = new ArrayList<>();
instances.add(new EventPayloadInstanceImpl(EventPayload.correlation("caseId", EventPayloadTypes.STRING), rootCaseId));
instances.add(new EventPayloadInstanceImpl(new EventPayload("taskListenerTask", EventPayloadTypes.JSON), jsonTask));
instances.add(new EventPayloadInstanceImpl(new EventPayload("taskListenerMessage", EventPayloadTypes.STRING), message));
EventInstanceImpl event = new EventInstanceImpl(eventKey, instances, task.getTenantId());
eventRegistry.sendSystemEventOutbound(event);
}
}
@@ -0,0 +1,26 @@
package com.customer.work.service;
import org.flowable.engine.RuntimeService;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component("taskProcessStarter")
public class TaskProcessStarter {
@Autowired
private RuntimeService runtimeService;
public void start(String processKey, DelegateTask task) {
// String processKey = (String) task.getVariable("subProcessKey"); // key from variable
Map<String, Object> vars = new HashMap<>(task.getVariables()); // carry over existing vars
vars.put("originTaskId", task.getId());
vars.put("originTaskName", task.getName());
runtimeService.startProcessInstanceByKey(processKey, vars);
// runtimeService.startProcessInstanceById(processKey, vars);
}
}
@@ -0,0 +1,37 @@
package com.customer.work.model.test;
import com.customer.work.model.FlowableModelTest;
import com.customer.work.model.FlowableModelTestUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.stream.Stream;
@FlowableModelTest
public class TrackVarsTest {
@Autowired
protected FlowableModelTestUtils flowableModelTest;
@Test
@Disabled
public void exportApp() {
flowableModelTest.exportApp("http://localhost:8106", "andiWS", "trackVarsApp", "admin", "test");
}
private Stream<Arguments> trackVarsProcessTestData() {
return flowableModelTest.getJsonArgumentsFromExcel("model/test/TrackVars/trackVars.xlsx");
}
@ParameterizedTest
@MethodSource("trackVarsProcessTestData")
public void trackVarsProcessTest(String path, JsonNode argument) {
ObjectNode result = flowableModelTest.testJsonExcelRow(path, argument);
}
}
-64
View File
@@ -1,64 +0,0 @@
http://localhost:8105/action-api/action-repository/action-definitions/key/GKB_A003?formId=FRM-ce76b8bf-27a5-11f1-8af0-3ead6594277e&formFieldId=GKB_F004_work-action1
http://localhost:8105/#/work/assignee/case/CAS-6d2e2764-325b-11f1-9ab1-3aee1b292dd9
#/work/assignee/case/{{$response.executionPayload.id}}
http://localhost:8105/platform-api/channel-definitions/key/DCL_CH002/events
{{endpoints.platform}}/search/query-case-instances/query/DCL_Q001?start={{$start}}&size={{$pageSize}}&sort={{$sort || 'startTime&order=desc'}}&{{$filter}}
{{endpoints.platform}}/search/query-case-instances/query/DCL_Q001?caseDefinitionKey=DCL_C001&start={{$start}}&size={{$pageSize}}&sort={{$sort || 'startTime&order=desc'}}&{{$filter}}
{{endpoints.platform}}/search/query-case-instances/query/DCL_Q001?caseDefinitionKey=DCL_C009&start={{$start}}&size={{$pageSize}}&sort={{$sort || 'startTime&order=desc'}}&{{$filter}}
${var:eq(payload.startOnHold, true) ? 'hold' : 'sign'}
http://localhost:8105/action-api/action-repository/action-definitions/AEN-ef8bdf0f-27ae-11f1-ba38-3ead6594277e/execute?scopeId=CAS-5b051448-3740-11f1-81d8-1eb9efb927bf&scopeType=cmmn
- ${json:addToArray(jsonArray, json:object())}
${json:object()}
${flw.format.formatString('Content %d' , root.versionNum)}
${root.versions.size() < root.versionNum ? json:addToArray(root.versions, json:object()) : null}
${cmmnRuntimeService.updateBusinessStatus(root.id, root.versions[root.versionIndex].)}
${verifyDecision == 'verified' ? cmmnRuntimeService.updateBusinessStatus(root.id, 'verified') : cmmnRuntimeService.updateBusinessStatus(root.id, 'rejected')}
root.versions[root.versionIndex]
${root.businessStatus == 'verified' || root.businessStatus == 'verify'}
${propertyConfigurationService.getProperty('baseUrl', 'baseUrl')}
${''.join('/', myBaseUrl, '#/work/assignee/case', root.id, 'task', myTaskId)}
${myBaseUrl}/#/work/assignee/case/${root.id}/task/myTaskId
${myBaseUrl}/#/work/assignee/case/${root.id}/task/${myTaskId}
http://localhost:8105/platform-api/process-instances?includeTranslations=true&createTestDefinition=false&includeNextTaskInfo=true
Document Generation V${root.versionIndex}: ${root.versions[root.versionIndex].documentGeneration}
Verify V${root.versionIndex}
Released V${root.versionIndex}
Verify Decision [${root.versionIndex}]: ${verifyDecision} - Overtime Selection: ${overtimeSelection}
${root.versions[root.versionIndex].documentGeneration}
Document Generation [${root.versionIndex}]: ${root.versions[root.versionIndex].documentGeneration}
Sign Decision [${root.versionIndex}]: ${signDecision} - Overtime Selection: ${overtimeSelection}
${root.versions[root.versionIndex].workOvertime}
Print Contract [${root.versionIndex}]
{{endpoints.platform}}/search/query-case-instances/query/DCL_Q001?caseDefinitionKey=DCL_C135&start={{$start}}&size={{$pageSize}}&sort={{$sort || 'startTime&order=desc'}}&{{$filter}}
{{endpoints.platform}}/search/query-process-instances/query/subitemProcessQuery?processDefinitionKey=subitemSubprocess&start={{$start}}&size={{$pageSize}}&sort={{$sort || 'startTime&order=desc'}}&{{$filter}}