Esempio n. 1
0
        /// <summary>
        /// 创建一个新的processInstance。并初始化
        /// </summary>
        /// <param name="processName"></param>
        /// <param name="processId"></param>
        /// <param name="parameters"></param>
        public void CreateInstance(string processName, Guid processId, IDictionary <string, IEnumerable <object> > parameters)
        {
            //根据公文流程名称processName构建内存对象processInstance
            var processInstance = Builder.CreateNewProcess(processId, processName, parameters);

            //保存到数据库WorkflowProcessInstance表中
            PersistenceProvider.InitializeProcess(processInstance);
            //设置流程的状态
            SetProcessNewStatus(processInstance, ProcessStatus.Initialized);
            if (processInstance.ProcessScheme.InitialActivity.HaveImplementation)
            {
                try
                {
                    SetProcessNewStatus(processInstance, ProcessStatus.Running);
                    //执行该活动
                    ExecuteRootActivity(processInstance);
                }
                catch (Exception)
                {
                    //TODO
                    SetProcessNewStatus(processInstance, ProcessStatus.Idled);
                }
            }

            SetProcessNewStatus(processInstance, ProcessStatus.Idled);
        }