Пример #1
0
        static void Main(string[] args)

        {
            //Creating new WorkFlow object and its empty list of steps.

            var workflow = new WorkFlow();



            //Adding new steps to workflow object created.

            workflow.AddStep(new Step("step 1"));

            workflow.AddStep(new Step("step 2"));

            workflow.AddStep(new Step("step 3"));



            //Running the workflow.

            var workflowengine = new WorkFlowEngine();

            workflowengine.Run(workflow);
        }
Пример #2
0
        /// <summary>
        /// 初始化
        /// </summary>
        public static void Initialization(PlcConfig plc, WorkFolwConfig flow)
        {
            PlcConfig  = plc;
            FlowConfig = flow;

            var modBuses = new List <Tuple <string, ModBusBase, Dictionary <string, PlcAddress> > >();

            if (flow?.WorkFlows != null && flow?.WorkFlows?.Length > 0 && plc?.PlcDevices != null && plc?.PlcDevices?.Count > 0)
            {
                //创建设备对象和地址
                foreach (var device in plc.PlcDevices)
                {
                    ModBusBase modBus;
                    var        modbusmodel = ModbusConf.CnfModel.FirstOrDefault(x => x.Name == device.Name);
                    if (modbusmodel == null)
                    {
                        continue;
                    }
                    if (modbusmodel.ConnectMode == Enums.ConnectMode.MODBUSRTU)
                    {
                        modBus = new ModbusRtuClient(modbusmodel.PortName, modbusmodel.BaudRate, modbusmodel.Station, modbusmodel.IsAddressStartWithZero, modbusmodel.DataBits, modbusmodel.StopBits, modbusmodel.Parity);
                    }
                    else
                    {
                        modBus = new ModbusTcp(modbusmodel.IpAddress, modbusmodel.Port, modbusmodel.Station, modbusmodel.IsAddressStartWithZero);
                    }
                    modBus.Name = device.Name;
                    //地址
                    var addressdict = new Dictionary <string, PlcAddress>();
                    if (device.Addresses != null)
                    {
                        foreach (var address in device.Addresses)
                        {
                            addressdict[address.Name] = address;
                        }
                    }
                    else
                    {
                        addressdict = new Dictionary <string, PlcAddress>();
                    }
                    modBuses.Add(new Tuple <string, ModBusBase, Dictionary <string, PlcAddress> >(modBus.Name, modBus, addressdict));
                }
                //创建工作流
                foreach (var work in flow.WorkFlows)
                {
                    var modbus = modBuses.FirstOrDefault(x => x.Item1 == work.PlcDeviceName);
                    if (modbus == null)
                    {
                        Logger.Device.Info($"WorkFlow:{work.Name} Not Found PlcDeviceName:{work.PlcDeviceName}");
                        continue;
                    }
                    var engine = new WorkFlowEngine(work, modbus.Item2, modbus.Item3);
                    workFlowEngines.Add(engine);
                    ServiceManager.Services.Add(engine);
                }
            }
        }
Пример #3
0
        private static void Main()
        {
            var workFlow = new WorkFlow();

            workFlow.AddActivity(new UploadVideo());
            workFlow.AddActivity(new CallWebService());
            workFlow.AddActivity(new SendEmail());
            workFlow.AddActivity(new ChangeVideoStatus());
            WorkFlowEngine.Run(workFlow);
        }
Пример #4
0
        static void Main(string[] args)
        {
            Workflow workFlow = new Workflow();

            workFlow.AddTask(new VideoUploader());
            workFlow.AddTask(new ChangeStatus());

            WorkFlowEngine engine = new WorkFlowEngine();

            engine.Run(workFlow);
        }
Пример #5
0
        static void Main(string[] args)
        {
            var workFlow = new WorkFlow();

            workFlow.AddWorkflow(new SendMessage());
            workFlow.AddWorkflow(new GenerateSchema());

            var workFlowEngine = new WorkFlowEngine();

            workFlowEngine.Run(workFlow);
        }
Пример #6
0
        public static void Run()
        {
            var workflow = new WorkFlow();

            workflow.Add(new VideoUploader());
            workflow.Add(new VideoEncoder());
            workflow.Add(new MailSender());
            workflow.Add(new StatusChanger());
            var engine = new WorkFlowEngine();

            engine.Run(workflow);
        }
Пример #7
0
        static void Main(string[] args)
        {
            var workflow = new Workflow();

            workflow.Add(new UploadVideo());
            workflow.Add(new NotifyWebService());
            workflow.Add(new NotifyVideoOwner());
            workflow.Add(new UpdateDatabase());

            var workflowEngine = new WorkFlowEngine();

            workflowEngine.Run(workflow);
        }
        private static void Main(string[] args)
        {
            var workFlow = new Workflow();

            workFlow.Add(new VideoUploader());
            workFlow.Add(new CallWebService());
            workFlow.Add(new SendEmail());

            var engine = new WorkFlowEngine();

            engine.Run(workFlow);

            Console.ReadLine();
        }
Пример #9
0
        public void Exercise()
        {
            var workFlowEngine = new WorkFlowEngine();
            var activitiesList = new List <IActivity>
            {
                new Upload(),
                new CallService(),
                new SendEmail(),
                new Status()
            };
            var workFlow = new WorkFlow(activitiesList);

            workFlowEngine.Run(workFlow);
        }
Пример #10
0
        static void UseWorkFlow()
        {
            var workFlow = new WorkFlow();

            workFlow.Add(new VideoUploador());
            workFlow.Add(new SendEmail());
            workFlow.Add(new CallWebService());
            workFlow.Remove(new CallWebService());

            var engine = new WorkFlowEngine();

            engine.Run(workFlow);

            Console.ReadLine();
        }
Пример #11
0
        public static IWorkFlowEngine TypeCreate()
        {
            var workflowEngine = new WorkFlowEngine(new IoCMySqlExecutingRepository(), new IoCMySqlExecutingRepository(), new Never.Serialization.EasyJsonSerializer());

            workflowEngine.TemplateEngine.Register(new Template("请病假申请").Next <请假申请>().Next <组长审批, 主管审批>(CoordinationMode.Meanwhile).Next <人事审批>().End());
            workflowEngine.TemplateEngine.Register(new Template("请节日假申请").Next <请假申请>().Next <组长审批>().Next <人事审批>().End());
            workflowEngine.TemplateEngine.Register(new Template("请婚姻假申请").Next <请假申请>().Next <组长审批, 主管审批>().Next <人事审批>().End());
            workflowEngine.TemplateEngine.TestCompliant += (o, e) =>
            {
                e.Register <请假申请>(new 请假申请消息(), (x, y) => { return(y is 请假申请消息); });
                e.Register <主管审批>(new 主管审批意见结果(), (x, y) => { return(y is 请假申请消息); });
                e.Register <组长审批>(new 组长审批意见结果(), (x, y) => { return(y is 请假申请消息); });
                e.Register <人事审批>(new 人事审批请假意见结果(), (x, y) => { return(y is 组长审批意见结果 || y is 主管审批意见结果); });
            };

            workflowEngine.Startup();

            return(workflowEngine);
        }
Пример #12
0
        public void TestMethod()
        {
            var workFlowEngine = new WorkFlowEngine(new MSSQLIHibernate());

            workFlowEngine.Start("Payment", new Guid("d407cc11-fd06-4d8c-8cb8-9eeb2561bd07"), "Sago的申请");
        }