public HistoricVariableUpdate build() { HistoricVariableUpdate mockVariable = mock(HistoricVariableUpdate.class); when(mockVariable.getId()).thenReturn(id); when(mockVariable.getVariableName()).thenReturn(name); when(mockVariable.getVariableInstanceId()).thenReturn(variableInstanceId); when(mockVariable.getVariableTypeName()).thenReturn(typedValue.getType().getName()); when(mockVariable.getValue()).thenReturn(typedValue.getValue()); } else { when(mockVariable.getValue()).thenReturn(null); when(mockVariable.getValue()).thenReturn(typedValue.getValue()); when(mockVariable.getTypedValue()).thenReturn(typedValue); when(mockVariable.getProcessDefinitionKey()).thenReturn(processDefinitionKey); when(mockVariable.getProcessDefinitionId()).thenReturn(processDefinitionId); when(mockVariable.getProcessInstanceId()).thenReturn(processInstanceId); when(mockVariable.getErrorMessage()).thenReturn(errorMessage); when(mockVariable.getRevision()).thenReturn(revision); when(mockVariable.getTime()).thenReturn(DateTimeUtil.parseDate(time)); when(mockVariable.getActivityInstanceId()).thenReturn(activityInstanceId); when(mockVariable.getTaskId()).thenReturn(taskId); when(mockVariable.getExecutionId()).thenReturn(executionId); when(mockVariable.getTypeName()).thenReturn(typedValue.getType().getName()); when(mockVariable.getCaseDefinitionKey()).thenReturn(caseDefinitionKey); when(mockVariable.getCaseDefinitionId()).thenReturn(caseDefinitionId); when(mockVariable.getCaseInstanceId()).thenReturn(caseInstanceId); when(mockVariable.getCaseExecutionId()).thenReturn(caseExecutionId); when(mockVariable.getTenantId()).thenReturn(tenantId); when(mockVariable.getUserOperationId()).thenReturn(userOperationId);
protected static void fromHistoricVariableUpdate(HistoricVariableUpdateDto dto, HistoricVariableUpdate historicVariableUpdate) { dto.revision = historicVariableUpdate.getRevision(); dto.variableName = historicVariableUpdate.getVariableName(); dto.variableInstanceId = historicVariableUpdate.getVariableInstanceId(); if (historicVariableUpdate.getErrorMessage() == null) { try { VariableValueDto variableValueDto = VariableValueDto.fromTypedValue(historicVariableUpdate.getTypedValue()); dto.value = variableValueDto.getValue(); dto.variableType = variableValueDto.getType(); dto.valueInfo = variableValueDto.getValueInfo(); } catch (RuntimeException e) { dto.errorMessage = e.getMessage(); dto.variableType = VariableValueDto.toRestApiTypeName(historicVariableUpdate.getTypeName()); } } else { dto.errorMessage = historicVariableUpdate.getErrorMessage(); dto.variableType = VariableValueDto.toRestApiTypeName(historicVariableUpdate.getTypeName()); } }
private void assertThatUpdateHasAllImportantInformation(HistoricVariableUpdate variableUpdate) { assertThat(variableUpdate, notNullValue()); assertThat(variableUpdate.getId(), notNullValue()); assertThat(variableUpdate.getProcessDefinitionKey(), is("process")); assertThat(variableUpdate.getProcessDefinitionId(), notNullValue()); assertThat(variableUpdate.getVariableName(), is("stringVar")); assertThat(variableUpdate.getValue().toString(), is("foo")); assertThat(variableUpdate.getTypeName(), is("string")); assertThat(variableUpdate.getTime(), notNullValue()); }
@Deployment(resources = "org/camunda/bpm/engine/test/history/HistoricVariableInstanceTest.testImplicitVariableUpdate.bpmn20.xml") public void testImplicitVariableRemoveAndUpdateInOneTransaction() { // given runtimeService.startProcessInstanceByKey("serviceTaskProcess", Variables.createVariables() .putValue("listVar", new ArrayList<String>()) .putValue("delegate", new RemoveAndUpdateValueDelegate())); if (isFullHistoryEnabled()) { List<HistoricDetail> historicDetails = historyService .createHistoricDetailQuery() .variableUpdates() .orderPartiallyByOccurrence().asc() .list(); Iterator<HistoricDetail> detailsIt = historicDetails.iterator(); while(detailsIt.hasNext()) { if (!"listVar".equals(((HistoricVariableUpdate) detailsIt.next()).getVariableName())) { detailsIt.remove(); } } // one for creation, one for deletion, none for update assertEquals(2, historicDetails.size()); HistoricVariableUpdate update1 = (HistoricVariableUpdate) historicDetails.get(0); List<String> value1 = (List<String>) update1.getValue(); assertNotNull(value1); assertTrue(value1.isEmpty()); HistoricVariableUpdate update2 = (HistoricVariableUpdate) historicDetails.get(1); assertNull(update2.getValue()); } }
assertEquals("aVariable", startVarUpdate.getVariableName()); assertEquals("initial value", startVarUpdate.getValue()); assertEquals(0, startVarUpdate.getRevision()); assertEquals(processInstance.getId(), startVarUpdate.getProcessInstanceId()); assertEquals(startedDate, startVarUpdate.getTime()); assertEquals("aVariable", updatedStringVariable.getVariableName()); assertEquals("updated value", updatedStringVariable.getValue()); assertEquals(processInstance.getId(), updatedStringVariable.getProcessInstanceId()); assertEquals(updatedDate, updatedStringVariable.getTime()); assertEquals("bVariable", intVariable.getVariableName()); assertEquals(123, intVariable.getValue()); assertEquals(processInstance.getId(), intVariable.getProcessInstanceId()); assertEquals(updatedDate, intVariable.getTime()); assertEquals("cVariable", longVariable.getVariableName()); assertEquals(12345L, longVariable.getValue()); assertEquals(processInstance.getId(), longVariable.getProcessInstanceId()); assertEquals(updatedDate, longVariable.getTime()); assertEquals("dVariable", doubleVariable.getVariableName()); assertEquals(1234.567, doubleVariable.getValue()); assertEquals(processInstance.getId(), doubleVariable.getProcessInstanceId()); assertEquals(updatedDate, doubleVariable.getTime()); assertEquals("eVariable", shortVariable.getVariableName());
protected VariableMap collectInitialVariables(CommandContext commandContext, HistoricProcessInstance processInstance) { HistoryService historyService = commandContext.getProcessEngineConfiguration().getHistoryService(); HistoricActivityInstance startActivityInstance = resolveStartActivityInstance(processInstance); HistoricDetailQueryImpl query = (HistoricDetailQueryImpl) historyService.createHistoricDetailQuery() .variableUpdates() .executionId(processInstance.getId()) .activityInstanceId(startActivityInstance.getId()); List<HistoricDetail> historicDetails = query .sequenceCounter(1) .list(); VariableMap variables = new VariableMapImpl(); for (HistoricDetail detail : historicDetails) { HistoricVariableUpdate variableUpdate = (HistoricVariableUpdate) detail; variables.putValueTyped(variableUpdate.getVariableName(), variableUpdate.getTypedValue()); } return variables; }
@Test @Deployment(resources={"org/camunda/bpm/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testQueryByVariableTypeInWithCapitalLetter() { // given Map<String, Object> variables1 = new HashMap<String, Object>(); variables1.put("stringVar", "test"); variables1.put("boolVar", true); runtimeService.startProcessInstanceByKey("oneTaskProcess", variables1); // when HistoricDetailQuery query = historyService.createHistoricDetailQuery() .variableTypeIn("Boolean"); // then assertEquals(1, query.list().size()); assertEquals(1, query.count()); HistoricDetail historicDetail = query.list().get(0); if (historicDetail instanceof HistoricVariableUpdate) { HistoricVariableUpdate variableUpdate = (HistoricVariableUpdate) historicDetail; assertEquals(variableUpdate.getVariableName(), "boolVar"); assertEquals(variableUpdate.getTypeName(), "boolean"); } else { fail("Historic detail should be a variable update!"); } }
@Test public void testHistoricDetailQueryById() { Task newTask = taskService.newTask(); taskService.saveTask(newTask); String variableName = "someName"; String variableValue = "someValue"; taskService.setVariable(newTask.getId(), variableName, variableValue); HistoricDetail result = historyService.createHistoricDetailQuery() .singleResult(); HistoricDetail resultById = historyService.createHistoricDetailQuery().detailId(result.getId()).singleResult(); assertNotNull(resultById); assertEquals(result.getId(), resultById.getId()); assertEquals(variableName, ((HistoricVariableUpdate)resultById).getVariableName()); assertEquals(variableValue, ((HistoricVariableUpdate)resultById).getValue()); assertEquals(ValueType.STRING.getName(), ((HistoricVariableUpdate)resultById).getVariableTypeName()); assertEquals(ValueType.STRING.getName(), ((HistoricVariableUpdate)resultById).getTypeName()); taskService.deleteTask(newTask.getId(), true); }
assertNotNull(fileVariableInstance.getValue()); assertEquals("fileVar", fileVariableInstance.getVariableName()); assertNull(fileVariableInstance.getValue()); FileValue typedValue = (FileValue) fileVariableInstance.getTypedValue(); assertNull(typedValue.getValue());
assertEquals("bytes", historicVariableUpdate.getVariableName()); assertEquals(":-(", new String((byte[])historicVariableUpdate.getValue())); assertEquals(0, historicVariableUpdate.getRevision()); assertEquals(historicStartEvent.getId(), historicVariableUpdate.getActivityInstanceId()); assertEquals("bytes", historicVariableUpdate.getVariableName()); assertEquals(":-)", new String((byte[])historicVariableUpdate.getValue())); assertEquals(1, historicVariableUpdate.getRevision()); assertEquals(waitStateActivity.getId(), historicVariableUpdate.getActivityInstanceId()); assertEquals("character", historicVariableUpdate.getVariableName()); assertEquals("a", historicVariableUpdate.getValue()); assertEquals(0, historicVariableUpdate.getRevision()); assertEquals(historicStartEvent.getId(), historicVariableUpdate.getActivityInstanceId()); assertEquals("number", historicVariableUpdate.getVariableName()); assertEquals("one", historicVariableUpdate.getValue()); assertEquals(0, historicVariableUpdate.getRevision()); assertEquals(historicStartEvent.getId(), historicVariableUpdate.getActivityInstanceId()); assertEquals("number", historicVariableUpdate.getVariableName()); assertEquals("two", historicVariableUpdate.getValue()); assertEquals(1, historicVariableUpdate.getRevision()); assertEquals(waitStateActivity.getId(), historicVariableUpdate.getActivityInstanceId()); assertEquals("zVar1", historicVariableUpdate.getVariableName()); assertEquals("Event: start", historicVariableUpdate.getValue()); assertEquals(0, historicVariableUpdate.getRevision()); assertEquals(historicStartEvent.getId(), historicVariableUpdate.getActivityInstanceId());
assertNotNull(instance.getProcessDefinitionKey()); assertEquals(key, instance.getProcessDefinitionKey()); assertNotNull(instance.getProcessDefinitionId()); assertEquals(processInstance.getProcessDefinitionId(), instance.getProcessDefinitionId()); assertNull(instance.getCaseDefinitionKey()); assertNull(instance.getCaseDefinitionId()); assertNotNull(instance.getProcessDefinitionKey()); assertEquals(key, instance.getProcessDefinitionKey()); assertNotNull(instance.getProcessDefinitionId()); assertEquals(processInstance.getProcessDefinitionId(), instance.getProcessDefinitionId()); assertNull(instance.getCaseDefinitionKey()); assertNull(instance.getCaseDefinitionId());
@Override protected TypedValue transformQueryResultIntoTypedValue(HistoricDetail queryResult) { if (!(queryResult instanceof HistoricVariableUpdate)) { throw new InvalidRequestException(Status.BAD_REQUEST, "Historic detail with Id '" + getId() + "' is not a variable update."); } HistoricVariableUpdate update = (HistoricVariableUpdate) queryResult; return update.getTypedValue(); }
assertNull(variableUpdate.getErrorMessage()); ObjectValue typedValue = (ObjectValue) variableUpdate.getTypedValue(); assertNotNull(typedValue); assertFalse(typedValue.isDeserialized());
updatesMap.put((String) update.getValue(), update); update = (HistoricVariableUpdate) updates.get(1); updatesMap.put((String) update.getValue(), update); assertNotNull(update1.getActivityInstanceId()); assertNotNull(update1.getExecutionId()); HistoricActivityInstance historicActivityInstance1 = historyService.createHistoricActivityInstanceQuery().activityInstanceId(update1.getActivityInstanceId()).singleResult(); assertEquals(historicActivityInstance1.getExecutionId(), update1.getExecutionId()); assertEquals("usertask1", historicActivityInstance1.getActivityId()); assertNotNull(update2.getActivityInstanceId()); HistoricActivityInstance historicActivityInstance2 = historyService.createHistoricActivityInstanceQuery().activityInstanceId(update2.getActivityInstanceId()).singleResult(); assertEquals("usertask2", historicActivityInstance2.getActivityId()); assertFalse(historicActivityInstance2.getExecutionId().equals(update2.getExecutionId()));
@Test public void testErrorMessage() { Task newTask = taskService.newTask(); taskService.saveTask(newTask); String variableName = "failingSerializable"; taskService.setVariable(newTask.getId(), variableName, new FailingSerializable()); HistoricDetail result = historyService.createHistoricDetailQuery() .disableBinaryFetching() .variableUpdates() .singleResult(); assertNull(((HistoricVariableUpdate)result).getValue()); assertNotNull(((HistoricVariableUpdate)result).getErrorMessage()); taskService.deleteTask(newTask.getId(), true); }
assertThat(variableUpdates.get(0).getVariableName(), is("var1")); assertThat(variableUpdates.get(1).getVariableName(), is("var2")); assertThat(variableUpdates.get(2).getVariableName(), is("var3"));
@Deployment public void testHistoricVariableInstanceRevision() { // given: // a finished process instance ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process"); assertProcessEnded(processInstance.getId()); // when // then HistoricVariableInstance variable = historyService .createHistoricVariableInstanceQuery() .singleResult(); assertNotNull(variable); HistoricVariableInstanceEntity variableEntity = (HistoricVariableInstanceEntity) variable; // the revision has to be 0 assertEquals(0, variableEntity.getRevision()); if (isFullHistoryEnabled()) { List<HistoricDetail> details = historyService .createHistoricDetailQuery() .orderByVariableRevision() .asc() .list(); for (HistoricDetail detail : details) { HistoricVariableUpdate variableDetail = (HistoricVariableUpdate) detail; assertEquals(0, variableDetail.getRevision()); } } }
@Test public void testVariableInstance() { Task newTask = taskService.newTask(); taskService.saveTask(newTask); String variableName = "someName"; String variableValue = "someValue"; taskService.setVariable(newTask.getId(), variableName, variableValue); VariableInstance variable = runtimeService .createVariableInstanceQuery() .singleResult(); assertNotNull(variable); HistoricVariableUpdate result = (HistoricVariableUpdate) historyService .createHistoricDetailQuery() .variableUpdates() .singleResult(); assertNotNull(result); assertEquals(variable.getId(), result.getVariableInstanceId()); taskService.deleteTask(newTask.getId(), true); }
if (detail instanceof HistoricVariableUpdate) { HistoricVariableUpdate variableUpdate = (HistoricVariableUpdate) detail; assertTrue(allowedVariableTypes.contains(variableUpdate.getTypeName())); } else { fail("Historic detail should be a variable update!");
assertEquals(theStartActivityInstanceId, historicVariableUpdate.getActivityInstanceId()); assertEquals("bar", historicVariableUpdate.getValue());