WSO2 BPS / SOAP - 如何使用 HumanTaskClientAPI 获得人工任务的结果?
WSO2 BPS / SOAP - How does one get the result of a human task using the HumanTaskClientAPI?
我试过使用 getOuputResponse.getTaskData()
但它 returns 和 XML 并且 GetOutcome 方法显然还不受支持。是否还有其他我没有看到的方法或者这是唯一的方法?
到目前为止我的代码:
GetOutput getOutput = new GetOutput();
getOutput.setIdentifier(resultRow[0].getId());
GetOutputResponse output = null;
try {
output = humanTaskClient.getOutput(getOutput);
} catch (IllegalOperationFault | IllegalArgumentFault e) {
e.printStackTrace();
} catch (IllegalStateFault e) {
e.printStackTrace();
} catch (IllegalAccessFault e) {
e.printStackTrace();
}
System.out.println("OUTPUT: " + output.getTaskData());
你是对的,getOutcome() 不起作用。输出是您为任务定义的 XML(即,在人工任务定义的 WSDL 中)。所以你可以解析:
TaskOperationsImpl ops = new TaskOperationsImpl();
String output = (String) ops.getOutput(new URI(taskIdString), null);
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
Node xmldoc = docBuilder.parse(new ByteArrayInputStream(output.getBytes()));
你可以处理结果。
我试过使用 getOuputResponse.getTaskData()
但它 returns 和 XML 并且 GetOutcome 方法显然还不受支持。是否还有其他我没有看到的方法或者这是唯一的方法?
到目前为止我的代码:
GetOutput getOutput = new GetOutput();
getOutput.setIdentifier(resultRow[0].getId());
GetOutputResponse output = null;
try {
output = humanTaskClient.getOutput(getOutput);
} catch (IllegalOperationFault | IllegalArgumentFault e) {
e.printStackTrace();
} catch (IllegalStateFault e) {
e.printStackTrace();
} catch (IllegalAccessFault e) {
e.printStackTrace();
}
System.out.println("OUTPUT: " + output.getTaskData());
你是对的,getOutcome() 不起作用。输出是您为任务定义的 XML(即,在人工任务定义的 WSDL 中)。所以你可以解析:
TaskOperationsImpl ops = new TaskOperationsImpl();
String output = (String) ops.getOutput(new URI(taskIdString), null);
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
Node xmldoc = docBuilder.parse(new ByteArrayInputStream(output.getBytes()));
你可以处理结果。