//next get specification data which will contain the input schema library
//that we are going to use to build the schema that we want for this task.
SpecificationData specData = worklistController.getSpecificationData(specID, _sessionHandle);
//now we get the parameters signature for the task
YParametersSchema paramsSignature = taskInfo.getParamSchema();
//now for each input param build an instruction
List inputParams = paramsSignature.getInputParams();
List instructions = Collections.synchronizedList(new ArrayList());
// this is an XML string containing the instance data for the current task
// this can be the instance file, and if identical elements are found in
// the schema during instance creation, the creation of new elements in
// the instance will be ignored.
for (int i = 0; i < inputParams.size(); i++) {
YParameter inputParam = (YParameter) inputParams.get(i);
if (null != inputParam.getElementName()) {
String elementName = inputParam.getElementName();
ElementReuseInstruction instruction = new ElementReuseInstruction(elementName);
instructions.add(instruction);
} else if (null != inputParam.getDataTypeName()) {
String elementName = inputParam.getName();
String typeName = inputParam.getDataTypeName();
boolean isPrimitiveType = "http://www.w3.org/2001/XMLSchema".equals(inputParam.getDataTypeNameSpace());
ElementCreationInstruction instruction = new ElementCreationInstruction(
elementName, typeName, isPrimitiveType);
instructions.add(instruction);
}
// currently we convert untyped parameters into creation parameters, due to a bug in YAWL
else if (inputParam.isUntyped()) {
//UntypedElementInstruction instruction = new UntypedElementInstruction();
//instructions.add(instruction);
String elementName = inputParam.getName();
//String typeName = inputParam.getDataTypeName();
String typeName = "boolean";
boolean isPrimitiveType = "http://www.w3.org/2001/XMLSchema".equals(inputParam.getDataTypeNameSpace());
ElementCreationInstruction instruction = new ElementCreationInstruction(
elementName, typeName, isPrimitiveType);
instructions.add(instruction);
}
}
//for each output param build an instruction
List outputParams = paramsSignature.getOutputParams();
for (int i = 0; i < outputParams.size(); i++) {
YParameter outputParam = (YParameter) outputParams.get(i);