using System;
using System.Collections.Generic;
using System.Collections;
using System.Data;
using System.Web;
namespace CCFlow.SDKFlowDemo
{
///
/// WindowsFormsApplicationDemo1 的摘要说明
///
public class WindowsFormsApplicationDemo1 : IHttpHandler
{
#region 变量.
public HttpContext context = null;
public string DoType
{
get
{
return context.Request.QueryString["DoType"];
}
}
public string FK_Flow
{
get
{
return context.Request.QueryString["FK_Flow"];
}
}
public Int64 WorkID
{
get
{
return Int64.Parse( context.Request.QueryString["WorkID"]);
}
}
public int FK_Node
{
get
{
return int.Parse(context.Request.QueryString["FK_Node"]);
}
}
public string ToEmps
{
get
{
return context.Request.QueryString["ToEmps"];
}
}
public int ToNodeID
{
get
{
return int.Parse(context.Request.QueryString["ToNodeID"]);
}
}
///
/// 当前节点ID
///
public int CurrentNodeID
{
get
{
return int.Parse(context.Request.QueryString["CurrentNodeID"]);
}
}
public string Msg
{
get
{
return context.Request.QueryString["Msg"];
}
}
public string UserNo
{
get
{
return context.Request.QueryString["UserNo"];
}
}
#endregion 变量.
public void ProcessRequest(HttpContext con)
{
context = con;
if (BP.Web.WebUser.No != UserNo)
BP.WF.Dev2Interface.Port_Login(UserNo);
try
{
string info = "";
switch (this.DoType)
{
case "StartFlows": //获得发起列表. 形成菜单内容.
info = StartFlows(this.UserNo);
break;
case "Todolist": //代办列表. 形成菜单内容.
info = Todolist(this.UserNo);
break;
case "Runing": //在途列表. 形成菜单内容.
info = Runing(this.UserNo);
break;
case "CreateBlankWork": //创建工作ID.
info = CreateBlankWork(this.FK_Flow, this.UserNo).ToString();
break;
case "SendWork": //执行发送ID.
info = SendWork(this.FK_Flow, this.WorkID, this.ToNodeID, this.ToEmps, null).ToString();
break;
case "GenerWorkNode": //获得WorkNode. 用于初始化工作处理器信息.
info = GenerWorkNode();
break;
case "GenerWillReturnNodes": //获得可以退回的节点.
info = GenerWillReturnNodes();
break;
case "ReturnWork": //执行退回.
info = ReturnWork(this.UserNo, this.WorkID, this.CurrentNodeID,
this.ToNodeID, this.Msg, false).ToString();
break;
default:
info = "err@" + this.DoType;
break;
}
context.Response.ContentType = "text/plain";
context.Response.Write(info);
// BP.Tools.Json.ToDataTable(
}
catch (Exception ex)
{
context.Response.ContentType = "text/plain";
context.Response.Write("err@" + ex.Message);
}
}
#region 工作处理.
///
/// 创建workid.
///
/// 流程编号
/// 人员编号
/// 该流程的一个空白的workid.
public Int64 CreateBlankWork(string flowNo, string userNo)
{
if (BP.Web.WebUser.No != userNo)
BP.WF.Dev2Interface.Port_Login(userNo);
return BP.WF.Dev2Interface.Node_CreateBlankWork(flowNo);
}
///
/// 工作发送
///
/// 流程编号
/// 工作ID
/// 到达的节点,可以为0
/// 到达的人员,可以为null
/// 相关参数,可以为null
/// 发送结果
public string SendWork(string flowNo, Int64 workid, int toNodeID, string toEmps, Hashtable ht)
{
return BP.WF.Dev2Interface.Node_SendWork(flowNo, workid, ht, toNodeID, toEmps).ToMsgOfText();
}
///
/// 获得一个工作节点.
///
///
public string GenerWorkNode()
{
// BP.WF.HttpHandler.WF_MyFlow myflow = new BP.WF.HttpHandler.WF_MyFlow( HttpContext.context);
//return myflow.GenerWorkNode();
return null;
}
#endregion 工作处理.
#region 退回窗口。
///
/// 退回
///
/// 用户
/// 流程编号
/// 工作ID
/// 当前节点ID
/// 退回到
/// 退回消息
/// 是否原路返回
/// 执行结果
public string ReturnWork(string flowNo, Int64 workid, int currentNodeID, int returnToNodeID,
string msg, bool isBackToThisNode = false)
{
return BP.WF.Dev2Interface.Node_ReturnWork(flowNo, workid, 0, currentNodeID, returnToNodeID, msg, isBackToThisNode);
}
///
/// 获得可以退回的节点
///
///
public string GenerWillReturnNodes()
{
DataTable dt= BP.WF.Dev2Interface.DB_GenerWillReturnNodes(this.WorkID);
return BP.Tools.Json.ToJson(dt);
}
#endregion 退回窗口。
#region 三大菜单.
///
/// 获得发起列表.
///
///
///
public string StartFlows(string userNo)
{
DataTable dt= BP.WF.Dev2Interface.DB_StarFlows(userNo);
return BP.Tools.Json.ToJson(dt);
}
///
/// 获得待办
///
///
///
public string Todolist(string userNo)
{
DataTable dt = BP.WF.Dev2Interface.DB_Todolist(userNo);
return BP.Tools.Json.ToJson(dt);
}
///
/// 在途
///
///
///
public string Runing(string userNo)
{
DataTable dt = BP.WF.Dev2Interface.DB_GenerRuning(userNo);
return BP.Tools.Json.ToJson(dt);
}
#endregion 三大菜单.
public bool IsReusable
{
get
{
return false;
}
}
}
}