Example #1
0
        /// <summary>
        /// 启动工作流
        /// </summary>
        /// <param name="startup"></param>
        /// <param name="executingRepository"></param>
        /// <param name="jsonSerializer"></param>
        /// <param name="templateRepository"></param>
        /// <param name="serialTaskStrategy"></param>
        /// <param name="taskschedStrategy"></param>
        /// <param name="environmentInit"></param>
        /// <returns></returns>
        public static ApplicationStartup UseWorlFlow(this ApplicationStartup startup,
                                                     ITemplateRepository templateRepository,
                                                     IExecutingRepository executingRepository,
                                                     IJsonSerializer jsonSerializer,
                                                     ITaskschedStrategy taskschedStrategy,
                                                     ISerialTaskStrategy serialTaskStrategy,
                                                     Action <IWorkFlowEngine> environmentInit)
        {
            if (startup.Items.ContainsKey("UseWorlFlow"))
            {
                return(startup);
            }

            startup.ServiceRegister.RegisterInstance <ITemplateRepository>(templateRepository);
            startup.ServiceRegister.RegisterInstance <IExecutingRepository>(executingRepository);

            var engine = new WorkFlowEngine(templateRepository, executingRepository, jsonSerializer, taskschedStrategy ?? new DefaultTaskschedStrategy(), serialTaskStrategy ?? new DefaultSerialTaskStrategy())
            {
                ApplicationStartup = startup,
            };

            startup.ServiceRegister.RegisterInstance <IWorkFlowEngine>(engine);
            startup.RegisterStartService(new StartupService(environmentInit, engine));
            startup.Items["UseWorlFlow"] = "true";
            return(startup);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="templateRepository"></param>
        /// <param name="executingRepository"></param>
        /// <param name="jsonSerializer"></param>
        /// <param name="taskschedStrategy"></param>
        /// <param name="serialTaskStrategy"></param>
        public WorkFlowEngine(ITemplateRepository templateRepository, IExecutingRepository executingRepository, IJsonSerializer jsonSerializer, ITaskschedStrategy taskschedStrategy, ISerialTaskStrategy serialTaskStrategy)
        {
            this.templateRepository  = templateRepository;
            this.executingRepository = executingRepository;
            this.serialTaskStrategy  = serialTaskStrategy;

            this.JsonSerializer = jsonSerializer;
            this.Strategy       = taskschedStrategy;
            this.Status         = WorkFlowStatus.Initing;
            this.TemplateEngine = new TemplateEngine(this, templateRepository);
        }