reference.setName("referenceProp");
reference.setWritable(false);
reference.setType("referencedType");
formDefinition.addFormProperty(reference);
ListPropertyDefinition itemType = new ListPropertyDefinition();
itemType.setMandatory(true);
itemType.setName("referenceProp");
itemType.setWritable(false);
itemType.addEntry(new ListPropertyEntry("1", "Item 1"));
itemType.addEntry(new ListPropertyEntry("2", "Item 2"));
formDefinition.addFormProperty(itemType);
// Write result to byte-array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(baos);
converter.writeWorkflowDefinition(workflowDefinition, writer);
// Parse definition based on written JSON
WorkflowDefinition parsedDefinition = converter.readWorkflowDefinition(baos.toByteArray());
assertEquals(workflowDefinition.getSteps().size(), parsedDefinition.getSteps().size());
int index = 0;
for(StepDefinition stepDefinition : parsedDefinition.getSteps()) {
assertTrue(stepDefinition instanceof HumanStepDefinition);
HumanStepDefinition humanStep = (HumanStepDefinition) stepDefinition;
HumanStepDefinition originalStep = (HumanStepDefinition) workflowDefinition.getSteps().get(index);
// Check general human-step fields
assertEquals(originalStep.getAssignee(), humanStep.getAssignee());
assertEquals(originalStep.getAssignmentType(), humanStep.getAssignmentType());
assertEquals(originalStep.getCandidateGroups(), humanStep.getCandidateGroups());
assertEquals(originalStep.getCandidateUsers(), humanStep.getCandidateUsers());
assertEquals(originalStep.getName(), humanStep.getName());
assertEquals(originalStep.getDescription(), humanStep.getDescription());
if(originalStep.getForm() != null) {
// Encountered step with form attached to it, should be last step
assertEquals(3, index);
assertEquals("123", humanStep.getForm().getFormKey());
assertEquals(originalStep.getForm().getFormPropertyDefinitions().size(),
humanStep.getForm().getFormPropertyDefinitions().size());
// Check form-fields, generic fields
for(int i=0; i<originalStep.getForm().getFormPropertyDefinitions().size(); i++) {
FormPropertyDefinition origDef = originalStep.getForm().getFormPropertyDefinitions().get(i);
FormPropertyDefinition parsedDef = humanStep.getForm().getFormPropertyDefinitions().get(i);
assertEquals(origDef.getName(), parsedDef.getName());
assertEquals(origDef.isMandatory(), parsedDef.isMandatory());
assertEquals(origDef.isWritable(), parsedDef.isWritable());
assertEquals(origDef.getClass(), parsedDef.getClass());
if(parsedDef instanceof TextPropertyDefinition) {
assertTrue(parsedDef.getParameters() != null);
assertEquals(1L, parsedDef.getParameters().size());
assertEquals("This is a test", parsedDef.getParameters().get("custom-parameter"));
}
if(parsedDef instanceof ListPropertyDefinition) {
ListPropertyDefinition parsed = (ListPropertyDefinition) parsedDef;
assertEquals(2L, parsed.getEntries().size());
}
}
}
index++;
}