public void AddWorkItem(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai)
        {
            T_WorkItemBase wiBase = this.InsertWorkItemBase(wi, pi, ai);
            string         str    = new CustomWorkItemHandler(this.Context).OnWorkItemCreating(wiBase, wi);

            wi.WwfBookmarkId = str;
            this.Context.Insert(wi);
            wi.ProcessInstance  = pi;
            wi.ActivityInstance = ai;
            ai.WorkItems.Add(wi);
            wi.ActivityParticipant = ai.Activity.ActivityParticipants.FirstOrDefault <SysActivityParticipant>(i => i.ActivityParticipantId == wi.ActivityParticipantId);
            wi.ApproveGroup        = ai.ApproveGroups.FirstOrDefault <SysWorkItemApproveGroup>(i => i.ApproveGroupId == wi.ApproveGroupId);
            wi.ApproveGroup.WorkItems.Add(wi);
            new ActivityRemindHandler(this, pi, ai, ActivityRemindUseTimeType.WorkItemCreate, wi, null).Execute();
        }
 public void UpdateWorkItem(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai)
 {
     this.UpdateWorkItemBaseState(wi);
     this.Context.Update(wi);
     if (wi.Status == 1)
     {
         CustomWorkItemHandler handler = new CustomWorkItemHandler(this.Context);
         int    wiBaseId      = wi.WorkItemBaseId.Value;
         int    workItemId    = wi.WorkItemId;
         string wwfBookmarkId = wi.WwfBookmarkId;
         handler.OnWorkItemCompleted(wiBaseId, workItemId, wwfBookmarkId);
         if (ai.Activity.ActivityType == 6)
         {
             WorkItemWrapper wrapper = new WorkItemWrapper(this, wi, pi);
             int?            result  = new int?(CompleteWorkItemMessage_Approve.ConvertBoolToApproveResult(wrapper.ApproveResult.Value));
             new ActivityRemindHandler(this, pi, ai, ActivityRemindUseTimeType.WorkItemFinished, wi, result).Execute();
         }
         else
         {
             new ActivityRemindHandler(this, pi, ai, ActivityRemindUseTimeType.WorkItemFinished, wi, null).Execute();
         }
     }
 }