public WorkflowInstance(IWorkflowTemplate workflowTemplate, IForm form, WorkflowExecutionContext context) { WorkflowInstanceId = CreateWorkflowInstanceId(); _workflowTemplate = workflowTemplate; _form = form; _executionContext = context; _isNew = true; Status = WorkflowInstanceStatus.New; }
public override IWorkflowInstance NewWorkflowInstance(IWorkflowTemplate template, string formType, string formId) { var instance = WorkflowInstanceFactory.Create(template, new Form(formType, formId), CurrentUser, new WorkflowExecutionContext() { Approver = CurrentUser }); return(instance); }
/// <summary> /// 验证流程模板 /// </summary> /// <param name="workflowTemplate"></param> /// <returns></returns> public static void Validate(IWorkflowTemplate workflowTemplate) { //判断首尾节点唯一 if (workflowTemplate.Activities.Count(p => p.BeginActivity) > 1 || workflowTemplate.Activities.Count(q => q.FinalActivity) > 1) { throw new IllegalWorkflowTemplateException(); } //TODO:确保无孤立节点 }
/// <summary> /// 创建工作流实例的工厂方法(新流程) /// </summary> /// <param name="template"></param> /// <param name="form"></param> /// <param name="owner"></param> /// <param name="context"></param> /// <returns></returns> public static IWorkflowInstance Create(IWorkflowTemplate template, IForm form, IApprover owner, WorkflowExecutionContext context) { //新建第一个activity实例,流程owner进行提交 var instance = new WorkflowInstance(template, form, owner, context); var activityInstance = new ActivityInstance { ActivityTemplate = template.Activities.First(), CreatedOn = DateTime.Now, LastUpdatedOn = DateTime.Now, }; instance.Current = activityInstance; return(instance); }
public abstract IWorkflowInstance NewWorkflowInstance(IWorkflowTemplate template, string formType, string formId);
public WorkflowInstance(IWorkflowTemplate workflowTemplate, IForm form, IApprover owner, WorkflowExecutionContext context) : this(workflowTemplate, form, context) { _owner = owner; }
/// <summary> /// 创建工作流实例的工厂方法 /// </summary> /// <param name="template"></param> /// <param name="form"></param> /// <param name="context"></param> /// <returns></returns> public static IWorkflowInstance Create(IWorkflowTemplate template, IForm form, WorkflowExecutionContext context) { var instance = new WorkflowInstance(template, form, context); return(instance); }