工作项表示由于特定原因而将一个对象分配给一个用户或一组用户。该对象通常是人员活动实例、流程实例或人员任务。原因是从用户对活动或任务具有的角色派生的。由于一个用户可以通过不同的角色来与活动或任务相关联,并且将为这些角色中的每一个创建工作项,所以一个活动或任务可以有多个工作项。
在活动实例或任务实例的生存期内,与该对象相关联的人员集合会有所变化,例如,变化原因可能包括人员度假、聘用了新人员或者需要以另一方式分配工作。为了适应这些变化,您可以开发应用程序来创建、删除和传递工作项。
- 创建工作项。
// query the task instance for which an additional
// administrator is to be specified
QueryResultSet result = task.query("TASK.TKIID",
"TASK.NAME='CustomerOrder'",
null, null, null);
if ( result.size() > 0 )
{
result.first();
// create the work item
task.createWorkItem((TKIID)(result.getOID(1)),
WorkItem.REASON_ADMINISTRATOR,"Smith");
}
此操作为具有管理员角色的用户 Smith 创建工作项。
- 删除工作项。
// query the task instance for which a work item is to be deleted
QueryResultSet result = task.query("TASK.TKIID",
"TASK.NAME='CustomerOrder'",
null, null, null);
if ( result.size() > 0 )
{
result.first();
// delete the work item
task.deleteWorkItem((TKIID)(result.getOID(1)),
WorkItem.REASON_READER,"Smith");
}
此操作为具有阅读者角色的用户 Smith 删除工作项。
- 传递工作项。
// query the task that is to be rescheduled
QueryResultSet result =
task.query("DISTINCT TASK.TKIID",
"TASK.NAME='CustomerOrder' AND
TASK.STATE=TASK.STATE.STATE_READY AND
WORK_ITEM.REASON=WORK_ITEM.REASON.REASON_POTENTIAL_OWNER AND
WORK_ITEM.OWNER_ID='Miller'",
null, null, null);
if ( result.size() > 0 )
{
result.first();
// transfer the work item from user Miller to user Smith
// so that Smith can work on the task
task.transferWorkItem((TKIID)(result.getOID(1)),
WorkItem.REASON_POTENTIAL_OWNER,"Miller","Smith");
}
此操作将工作项传递给用户 Smith 以使其能够处理该工作项。