예제 #1
0
 public WorkflowInstance(IWorkflowTemplate workflowTemplate, IForm form, WorkflowExecutionContext context)
 {
     WorkflowInstanceId = CreateWorkflowInstanceId();
     _workflowTemplate  = workflowTemplate;
     _form             = form;
     _executionContext = context;
     _isNew            = true;
     Status            = WorkflowInstanceStatus.New;
 }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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:确保无孤立节点
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
 public abstract IWorkflowInstance NewWorkflowInstance(IWorkflowTemplate template, string formType, string formId);
예제 #6
0
 public WorkflowInstance(IWorkflowTemplate workflowTemplate, IForm form, IApprover owner, WorkflowExecutionContext context)
     : this(workflowTemplate, form, context)
 {
     _owner = owner;
 }
예제 #7
0
        /// <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);
        }