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;
        }