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

📄 sqltrackingmanager.cs

📁 博客园WxWinter写的WF工作流入门学习资料及示例代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
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.IO;

namespace wxwinter.wf.Service
{
	public class SQLTrackingManager : ITrackingManager
	{
        WorkflowRuntime engine; //管理器所管理的引擎

        /// <summary>
        /// 构造函数,传入一个引擎对象
        /// </summary>
        public SQLTrackingManager(WorkflowRuntime engine)
        {
            this.engine = engine;
        }

        /// <summary>
        /// 得到SqlTrackingService对象
        /// </summary>
        public  SqlTrackingService GetTrackingService()
        {
            if (engine == null)
            { throw new System.Exception("引擎没有实例化"); }

            SqlTrackingService track = engine.GetService<SqlTrackingService>();

                return track;
        }

        /// <summary>
        /// 引擎中是否存在跟踪服务
        /// </summary>
        public  bool IsTrackingServiceInEngine()
        {
            SqlTrackingService track = GetTrackingService();

            if (track == null)
            {return false;}
            else
            {return true;}
        }

        /// <summary>
        /// 添加跟踪服务到引擎,指定连接字符串
        /// </summary>
        public  string AddTrackingServiceToEngine(string constring)
        {
            try
            {   //使用SqlConnection测试一下连接情况
                System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(constring);
                con.Open();
                con.Close();
            }
            catch
            {
                throw new System.Exception("SqlTrackingService数据库无法连接");
            }

            SqlTrackingService track = new SqlTrackingService(constring);
            return AddTrackingServiceToEngine(track);

        }

        /// <summary>
        /// 添加跟踪服务到引擎,指定要添加到引擎中的SqlTrackingService 对象,非接口方法
        /// </summary>
        public  string AddTrackingServiceToEngine(SqlTrackingService track)
        {
            if (engine == null)
            {throw new System.Exception("引擎没有实例化");}
            if (engine.IsStarted)
            {
                return "引擎正在运行,无法向引擎添加SqlTrackingService服务";
            }

            if (track == null)
            {
                throw new System.Exception("SqlTrackingService跟踪服务没有实例化");               
            }


            if (IsTrackingServiceInEngine())
            {
                return "引擎中已经存在SqlTrackingService跟踪服务";
            }
            else
            {
                engine.AddService(track);
                return "SqlTrackingService跟踪服务已添加到引擎中";
            }

        }

        /// <summary>
        /// 从引擎中移除跟踪服务
        /// </summary>
        public  string RemoveTrackingServiceFromEngine()
        {
            if (engine == null)
            { throw new System.Exception("引擎没有实例化");}

            if (engine.IsStarted)
            {
                return "引擎正在运行,无法移除SqlTrackingService服务";
            }

            SqlTrackingService track = GetTrackingService();

            if (track==null)
            {
                return "引擎中不存在SqlTrackingService跟踪服务";

            }
            else
            {
                engine.RemoveService(track);
                return "SqlTrackingService跟踪服务已移出";
                
            }
        }
	}
}

⌨️ 快捷键说明

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