参与任务或纯人员任务通过工作项被指定到企业中的各个人员。例如,参与任务及其相关工作项是在流程导航到人员活动时创建的。其中一个潜在所有者声明与该工作项相关联的任务。此人员负责提供相关信息并完成该任务。
QueryResultSet result = task.query("TASK.TKIID", "TASK.STATE = TASK.STATE.STATE_READY AND (TASK.KIND = TASK.KIND.KIND_PARTICIPATING OR TASK.KIND = TASK.KIND.KIND_HUMAN)AND WORK_ITEM.REASON = WORK_ITEM.REASON.REASON_POTENTIAL_OWNER", null, null, null);
此操作返回一个查询结果集,该结果集包含已登录人员能够处理的任务。
if (result.size() > 0) { result.first(); TKIID tkiid = (TKIID) result.getOID(1); ClientObjectWrapper input = task.claim(tkiid); DataObject taskInput = null ; if ( input.getObject()!= null && input.getObject() instanceof DataObject ) { taskInput = (DataObject)input.getObject(); // read the values ... } }
声明任务时,将返回该任务的输入消息。
可以成功地完成该任务,也可以通过故障消息来完成该任务。如果该任务成功,则将传递输出消息。如果该任务不成功,则将传递故障消息。必须为这些操作创建适当的消息。
ClientObjectWrapper output = task.createOutputMessage(tkiid); DataObject myMessage = null ; if ( output.getObject()!= null && output.getObject() instanceof DataObject ) { myMessage = (DataObject)output.getObject(); //set the parts in your message, for example, an order number myMessage.setInt("OrderNo", 4711); } //complete the task task.complete(tkiid, output);此操作将设置包含序号的输出消息。该任务将进入“已完成”状态。
//retrieve the faults modeled for the task List faultNames = task.getFaultNames(tkiid); //create a message of the appropriate type ClientObjectWrapper myFault = task.createFaultMessage(tkiid, (String)faultNames.get(0)); // set the parts in your fault message, for example, an error number DataObject myMessage = null ; if ( myFault.getObject()!= null && input.getObject() instanceof DataObject ) { myMessage = (DataObject)myFault.getObject(); //set the parts in the message, for example, a customer name myMessage.setInt("error",1304); } task.complete(tkiid, (String)faultNames.get(0), myFault);
此操作设置包含错误代码的故障消息。该任务将进入“已失败”状态。