处理参与任务或纯人员任务

执行本任务的原因和时间

参与任务或纯人员任务通过工作项被指定到企业中的各个人员。例如,参与任务及其相关工作项是在流程导航到人员活动时创建的。其中一个潜在所有者声明与该工作项相关联的任务。此人员负责提供相关信息并完成该任务。

本任务的步骤

  1. 列示已登录人员能够处理的任务。
    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); 

    此操作返回一个查询结果集,该结果集包含已登录人员能够处理的任务。

  2. 声明要处理的任务。
    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
        ...
      }  
    }

    声明任务时,将返回该任务的输入消息。

  3. 在处理任务完成时,完成该任务。

    可以成功地完成该任务,也可以通过故障消息来完成该任务。如果该任务成功,则将传递输出消息。如果该任务不成功,则将传递故障消息。必须为这些操作创建适当的消息。

    1. 要成功地完成任务,请创建输出消息。
      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); 
      此操作将设置包含序号的输出消息。该任务将进入“已完成”状态。
    2. 要在发生故障时完成任务,请创建故障消息。
      //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);

      此操作设置包含错误代码的故障消息。该任务将进入“已失败”状态。


使用条款 |


(c) Copyright IBM Corporation 2005, 2006.
本信息中心基于 Eclipse 技术(http://www.eclipse.org)。