📄 sqltrackingmanager.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 + -