参加タスクや純粋なヒューマン・タスクは、作業項目を通じて、組織内の さまざまな人に割り当てられます。プロセスが staff アクティビティーにナビゲートしたときなどに、参加タスクとそれに関連した作業項目が作成されます。 潜在的な所有者の中の 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);
このアクションは、 ログオン・ユーザーが作業することができるタスクが 含まれる照会結果セットを戻します。
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);
このアクションにより、エラー・コードを含む障害メッセージが設定されます。 タスクは、失敗状態になります。