public IWorkItem reasignWorkItemTo(IWorkItem workItem, String actorId, String comments) { WorkItem newWorkItem = new WorkItem(); BeanUtils.CopyProperties(workItem, newWorkItem, OptionTyp.None); newWorkItem.Id=null; newWorkItem.ActorId=actorId; newWorkItem.CreatedTime=this.RuntimeContext.CalendarService.getSysDate(); this.RuntimeContext.PersistenceService.SaveOrUpdateWorkItem(newWorkItem); ((WorkItem)workItem).State = WorkItemEnum.CANCELED; ((WorkItem)workItem).EndTime=this.RuntimeContext.CalendarService.getSysDate(); ((WorkItem)workItem).Comments=comments; this.RuntimeContext.PersistenceService.SaveOrUpdateWorkItem(workItem); return newWorkItem; }
/// <summary> /// 返回WorkItem 共8个字段 /// </summary> public static WorkItem GetWorkItem(IDataReader dr) { WorkItem workItem = new WorkItem(); workItem.Id=Convert.ToString(dr["id"]); workItem.State= (WorkItemEnum)Convert.ToInt32(dr["state"]); if (!(dr["created_time"] is DBNull)) workItem.CreatedTime=Convert.ToDateTime(dr["created_time"]); if (!(dr["claimed_time"] is DBNull)) workItem.ClaimedTime=Convert.ToDateTime(dr["claimed_time"]); if (!(dr["end_time"] is DBNull)) workItem.EndTime=Convert.ToDateTime(dr["end_time"]); workItem.ActorId=Convert.ToString(dr["actor_id"]); workItem.TaskInstanceId=Convert.ToString(dr["taskinstance_id"]); workItem.Comments=Convert.ToString(dr["comments"]); return workItem; }
public WorkItem createWorkItem(IWorkflowSession currentSession, IProcessInstance processInstance, ITaskInstance taskInstance, String actorId) { IPersistenceService persistenceService = this.RuntimeContext.PersistenceService; WorkItem wi = new WorkItem(); wi.TaskInstance=taskInstance; wi.ActorId=actorId; wi.State=WorkItemEnum.INITIALIZED; wi.CreatedTime = this.RuntimeContext.CalendarService.getSysDate(); wi.RuntimeContext = this.RuntimeContext; wi.CurrentWorkflowSession=currentSession; //保存到数据库 persistenceService.SaveOrUpdateWorkItem(wi); //触发事件 //触发相应的事件 TaskInstanceEvent e = new TaskInstanceEvent(); e.Source=taskInstance; e.WorkItem=wi; e.WorkflowSession=currentSession; e.ProcessInstance=processInstance; e.EventType = TaskInstanceEventEnum.AFTER_WORKITEM_CREATED; if (this.DefaultTaskInstanceEventListener != null) { this.DefaultTaskInstanceEventListener.onTaskInstanceEventFired(e); } this.fireTaskInstanceEvent(taskInstance, e); return wi; }