/// <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); }
/// <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); }