📄 servermanagerform.cs
字号:
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 + -