⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servermanagerform.cs

📁 博客园WxWinter写的WF工作流入门学习资料及示例代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Runtime.Tracking;
using System.Workflow.Runtime.Hosting;
using System.ComponentModel.Design;
using System.Xml;
using System.Reflection;
using System.Workflow.ComponentModel.Compiler;
using System.IO;
using System.CodeDom.Compiler;
using wxwinter.wf.Service;
using System.Workflow.ComponentModel.Serialization;
using System.ComponentModel.Design.Serialization;
using wxwinter.wf.UDPCommunication;
using wxwinter.wf.SystemTable;
using wxwinter.wf.WCFCommunication;
using System.ServiceModel;

namespace wxwinter.wf.WFServer
{
	public partial class ServerManagerForm: Form
	{
       WorkflowRuntime WFEngine ;
       wxwinter.wf.Service.EngineManager WFEM;
       wxwinter.wf.Service.SQLTrackingManager sqltrack ;
       wxwinter.wf.Service.wxdTrackingManager wxdtrack ;
       wxwinter.wf.Service.SqlWorkflowPersistenceServiceManager sqlpersistence;
       wxwinter.wf.Service.ExchangeManager exchange;
       wxwinter.wf.ExchangeService.ExternalEvent exchangeEvent;
       wxwinter.wf.ExchangeService.ExternalMethod exchangeMoth;
       testControl controlObject;
       ServiceHost host;

#region 窗体事件

        public ServerManagerForm()
        {
            InitializeComponent();
        }

        
        //窗体加载
        private void ServerManager_Load(object sender, EventArgs e)
        {
            controlObject = new testControl();
            this.dataGrid1.DataSource = controlObject.InstanceMessageTable.InstanceState;
            this.dataGrid2.DataSource = controlObject.InstanceMessageTable.InstanceHistory;

            exchangeEvent = new wxwinter.wf.ExchangeService.ExternalEvent();
            exchangeMoth = new wxwinter.wf.ExchangeService.ExternalMethod(controlObject.InstanceMessageTable);

        }
        
        //窗体关闭
        private void ServerManager_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (WFEngine != null)
            {
                WFEngine.StopRuntime();
            }

            if (host != null)
            {
                host.Close();
            }
        }


#endregion


#region 引擎管理

        //引擎加载的服务列表
        private void btGetServerList_Click(object sender, EventArgs e)
        {

            this.listBox1.Items.Clear();


            foreach (string o in WFEM.GetServiceList())
            {
                listBox1.Items.Add(o);
            }

            this.listBox4.Items.Clear();

            foreach (string o in WFEM.GetEngineLog())
            {
                listBox4.Items.Add(o);
            }


        }


        //启动引擎
        private void btStart_Click(object sender, EventArgs e)
        {
            this.listBox2.Items.Clear();
            if (WFEngine == null)
            {
                WFEngine = new WorkflowRuntime();

                WFEngine.Name = "wxwinter";

                if (this.cbUDP.Checked )
                {
                    UDPSend udpobj = new UDPSend(this.txIP.Text , int.Parse(this.txPo.Text));
                    WFEM = new EngineManager(WFEngine,udpobj);
                }
                else
                {
                    WFEM = new EngineManager(WFEngine);
                }
                controlObject.WFEM = WFEM;
            }

            WFEngine.StopRuntime(); //停止引擎
            sqltrack = new SQLTrackingManager(WFEngine);
            wxdtrack = new wxdTrackingManager(WFEngine);
            sqlpersistence = new SqlWorkflowPersistenceServiceManager(WFEngine);
            exchange = new wxwinter.wf.Service.ExchangeManager(WFEngine);

            // ------------SqlWorkflowPersistenceService---------
            if (this.cbSQLPersistence.Checked)
            {
                string s = sqlpersistence.AddPersistenceServiceToEngine(this.txSqlPersistenceCon.Text);
                this.listBox2.Items.Add(s);

            }
            else
            {
                string s = sqlpersistence.RemovePersistenceServiceFromEngine();
                this.listBox2.Items.Add(s);

            }

            //-------------------------------------------


            //------------SqlTrackingService-------------
            if (cbTrack.Checked)
            {
                string s = sqltrack.AddTrackingServiceToEngine(this.txtTrackCon.Text);
                this.listBox2.Items.Add(s);

            }
            else
            {
                string s = sqltrack.RemoveTrackingServiceFromEngine();
                this.listBox2.Items.Add(s);

            }
            //------------------------------------------


            //------------wxdTrackingService------------
            if (cbwxdTrack.Checked)
            {
                string s = wxdtrack.AddTrackingServiceToEngine(this.txtTrackPath.Text);
                this.listBox2.Items.Add(s);
            }
            else
            {
                string s = wxdtrack.RemoveTrackingServiceFromEngine();
                this.listBox2.Items.Add(s);

            }
            // ----------------Exchange服务---------------------------


            if (cbExchange.Checked)
            {
                string s = exchange.AddExchangeServiceToEngine();
                this.listBox2.Items.Add(s);

                string s11 = exchange.AddServerObject(exchangeEvent);
                this.listBox2.Items.Add(s11);

                string s12 = exchange.AddServerObject(exchangeMoth);
                this.listBox2.Items.Add(s12);
                controlObject.exchangeEvent = this.exchangeEvent;
            }
            else
            {


                string s11 = exchange.RemoveServerObject(exchangeEvent);
                this.listBox2.Items.Add(s11);

                string s12 = exchange.RemoveServerObject(exchangeMoth);
                this.listBox2.Items.Add(s12);

                string s = exchange.RemoveExchangeServiceFromEngine();
                this.listBox2.Items.Add(s);
            }


            //
            WFEngine.StartRuntime(); //启动引擎

            btStart.Text = "重新启动";
            timer1.Enabled = true;

        }

        //停止引擎
        private void btStop_Click(object sender, EventArgs e)
        {
            this.WFEngine.StopRuntime();
        }

        #endregion


#region 创建实例


        //从xoml文件创建实例
        //用参数方式创建工作流
        private void btCreateP_Click(object sender, EventArgs e)
        {


  



        }

        //从xoml文件创建实例
        private void btCreateWffromXomlFile_Click(object sender, EventArgs e)
        {
            string gid =WFEM.CreateWorkflowFromXomlFile(txtXomlfilepath.Text);
            if (cbStart.Checked)
            {
                WFEM.StartInstance(gid);
            }

        }

        //从字xoml串创造工作流
        private void btCreateWffromXomlString_Click(object sender, EventArgs e)
        {
            string gid = WFEM.CreateWorkflowFormXomlString(this.txtXomlstring.Text);
            if (cbStart.Checked)
            {
                WFEM.StartInstance(gid);
            }
        }

        //从DLL创建工作流
        private void btCreateWffromClass_Click(object sender, EventArgs e)
        {
            System.Reflection.Assembly workflowAssembly;

            string classfile = txtWorkflowClassFile.Text; //盘符路径dll文件名

            workflowAssembly = System.Reflection.Assembly.LoadFrom(classfile);

            System.Type workflowType = null;

            if (this.listBox5.SelectedItem != null)
            {
                string workflowString = this.listBox5.SelectedItem.ToString();
                object obj = workflowAssembly.CreateInstance(workflowString);

                workflowType = obj.GetType();
            }

            if (workflowType != null)
            {

                if (workflowType.IsSubclassOf(typeof(System.Workflow.ComponentModel.Activity)))
                {
                    WorkflowInstance  ins = WFEngine.CreateWorkflow(workflowType);
                    if (cbStart.Checked)
                    {
                        ins.Start();
                    }

                }
            }

        }

        #endregion

        
#region 实例控制

        //启动实例
        private void btStateInstance_Click(object sender, EventArgs e)
        {
            if (this.listBox3.SelectedItem != null)
            {
                WFEM.StartInstance(this.listBox3.SelectedItem.ToString());
            }
        }

        //终止实例
        private void btAbortInstance_Click(object sender, EventArgs e)
        {
            if (this.listBox3.SelectedItem != null)
            {
                string s=this.listBox3.SelectedItem.ToString();
                WFEM.AbortInstance(s);
            }
        }

        //恢复暂停实例
        private void btResumeInstance_Click(object sender, EventArgs e)
        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -