public void CreateWorkItem(WorkItem wi) { using (SoodaTransaction st = StartTransaction()) { Task tsk = new Task(st); if (wi.AssigneeGroupId != null) tsk.AssigneeGroup = Group.GetRef(st, Convert.ToInt32(wi.AssigneeGroupId)); if (wi.AssigneeId != null) tsk.Assignee = User.GetRef(st, Convert.ToInt32(wi.AssigneeId)); tsk.CorrelationId = wi.CorrelationId; tsk.ProcessInstance = wi.ProcessInstanceId; tsk.Title = wi.Title; tsk.Description = wi.Description; tsk.TaskId = wi.TaskId; tsk.Status = TaskStatus.AssignedGroup; if (!wi.IsGroupResponsible) tsk.Status = TaskStatus.Assigned; tsk.CreatedDate = DateTime.Now; if (wi.AssigneeGroupId != null) tsk.AssigneeGroup = (Group) st.GetObject(typeof(Group), wi.AssigneeGroupId); if (wi.AssigneeId != null) tsk.Assignee = (User)st.GetObject(typeof(User), wi.AssigneeId); st.Commit(); } }
protected override void DoInitiateTask() { WorkItem wi = new WorkItem(); wi.ProcessInstanceId = Context.ProcessInstanceId; wi.ProcessDefinitionId = Context.TaskDefinition.ParentProcess.DefinitionId; wi.CorrelationId = this.CorrelationId; wi.TaskId = Context.TaskDefinition.Id; wi.Title = Title; wi.Description = Description; wi.AssigneeGroupId = AssigneeGroup; wi.AssigneeId = AssigneeId; wi.TaskData = new DataObject(VariablesContainer); wi.SharedId = Context.SharedId; Context.EnvironmentContext.WorklistService.CreateWorkItem(wi); log.Info("Created work item"); }