You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

299 lines
11 KiB
Plaintext

using System;
using BP.DA;
using BP.Web;
using BP.WF.Template;
namespace BP.WF.HttpHandler
{
/// <summary>
/// 页面功能实体
/// </summary>
public class WF_Admin_CCBPMDesigner_FlowDevModel : BP.WF.HttpHandler.DirectoryPageBase
{
#region 变量.
/// <summary>
/// 类别
/// </summary>
public string SortNo
{
get
{
return this.GetRequestVal("SortNo");
}
}
/// <summary>
/// 流程名称
/// </summary>
public string FlowName
{
get
{
return this.GetRequestVal("FlowName");
}
}
public FlowDevModel FlowDevModel
{
get
{
return (FlowDevModel)this.GetRequestValInt("FlowDevModel");
}
}
#endregion 变量.
/// <summary>
/// 构造函数
/// </summary>
public WF_Admin_CCBPMDesigner_FlowDevModel()
{
}
/// <summary>
/// 获取默认的开发模式.
/// </summary>
/// <returns></returns>
public string Default_Init()
{
string sql = "SELECT val FROM Sys_GloVar WHERE No='FlowDevModel_" + BP.Web.WebUser.No + "'";
int val = DBAccess.RunSQLReturnValInt(sql, 1);
return val.ToString();
}
public string FlowDevModel_Save()
{
string SortNo = GetRequestVal("SortNo");
string FlowName = GetRequestVal("FlowName");
string url = GetRequestVal("Url");
string frmURL = GetRequestVal("FrmUrl");
string frmID = GetRequestVal("FrmID");
string frmPK = GetRequestVal("FrmPK"); //自定义表单主键.
if (DataType.IsNullOrEmpty(frmURL) == true)
frmURL = frmID;
//执行创建流程模版.
string flowNo = BP.WF.Template.TemplateGlo.NewFlowTemplate(SortNo, FlowName, DataStoreModel.ByCCFlow, null, null);
Flow fl = new Flow(flowNo);
fl.FlowDevModel = this.FlowDevModel; //流程开发模式.
if (this.FlowDevModel == FlowDevModel.JiJian)
frmURL = "ND" + int.Parse(flowNo + "01");
fl.SetPara("FrmPK", frmPK); //自定义主键模式的表单.
fl.FrmUrl = frmURL;
fl.Update();
//发起测试人为当前登录人No
DBAccess.RunSQL("UPDATE WF_Flow SET Tester = '" + BP.Web.WebUser.No + "' WHERE No='" + flowNo + "'");
//设置极简类型的表单信息.
if (this.FlowDevModel == FlowDevModel.JiJian)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No);
foreach (Node nd in nds)
{
nd.NodeFrmID = "ND" + int.Parse(fl.No) + "01";
if (nd.IsStartNode == false)
{
nd.FrmWorkCheckSta = FrmWorkCheckSta.Enable;
FrmNode fn = new FrmNode();
fn.FK_Frm = nd.NodeFrmID;
fn.IsEnableFWC = FrmWorkCheckSta.Enable;
fn.FK_Node = nd.NodeID;
fn.FK_Flow = flowNo;
fn.FrmSln = FrmSln.Readonly;
fn.setMyPK(fn.FK_Frm + "_" + fn.FK_Node + "_" + fn.FK_Flow);
//执行保存.
fn.Save();
}
nd.DirectUpdate();
}
}
//设置累加类型的表单信息.
if (this.FlowDevModel == FlowDevModel.FoolTruck)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No);
foreach (Node nd in nds)
{
//表单方案的保存
FrmNode fn = new FrmNode();
fn.FK_Frm = nd.NodeFrmID;
//fn.IsEnableFWC = FrmWorkCheckSta.Enable;
fn.FK_Node = nd.NodeID;
fn.FK_Flow = flowNo;
fn.FrmSln = FrmSln.Readonly;
fn.setMyPK(fn.FK_Frm + "_" + fn.FK_Node + "_" + fn.FK_Flow);
//执行保存.
fn.Save();
nd.HisFormType = NodeFormType.FoolTruck;
nd.DirectUpdate();
}
}
//设置绑定表单库的表单信息.
if (this.FlowDevModel == FlowDevModel.RefOneFrmTree)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No);
foreach (Node nd in nds)
{
nd.NodeFrmID = fl.FrmUrl;
if (nd.IsStartNode == true)
nd.FrmWorkCheckSta = FrmWorkCheckSta.Disable;
else
nd.FrmWorkCheckSta = FrmWorkCheckSta.Enable;
nd.HisFormType = NodeFormType.RefOneFrmTree;
nd.DirectUpdate();
FrmNode fn = new FrmNode();
fn.FK_Frm = nd.NodeFrmID;
if (nd.IsStartNode == true)
{
fn.IsEnableFWC = FrmWorkCheckSta.Disable;
fn.FrmSln = FrmSln.Default;
}
else
{
fn.IsEnableFWC = FrmWorkCheckSta.Enable;
fn.FrmSln = FrmSln.Readonly;
}
fn.FK_Node = nd.NodeID;
fn.FK_Flow = flowNo;
fn.FrmSln = FrmSln.Readonly;
fn.setMyPK(fn.FK_Frm + "_" + fn.FK_Node + "_" + fn.FK_Flow);
//执行保存.
fn.Save();
}
}
//绑定表单库的表单,现在绑定了一个表单
if (this.FlowDevModel == FlowDevModel.FrmTree)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No, null);
foreach (Node nd in nds)
{
//nd.setNodeFrmID(fl.getFrmUrl());
if (nd.IsStartNode == true)
nd.FrmWorkCheckSta = FrmWorkCheckSta.Disable;
else
nd.FrmWorkCheckSta = FrmWorkCheckSta.Enable;
nd.HisFormType = NodeFormType.SheetTree;
nd.DirectUpdate();
FrmNode fn = new FrmNode();
string[] frmIDs = fl.FrmUrl.Split(',');
foreach (string str in frmIDs)
{
if (DataType.IsNullOrEmpty(str) == true)
continue;
fn.FK_Frm = str;
fn.FrmNameShow = DBAccess.RunSQLReturnString("SELECT Name FROM Sys_MapData WHERE No='" + str + "'");
if (nd.IsStartNode == true)
{
fn.IsEnableFWC = FrmWorkCheckSta.Disable;
fn.FrmSln = FrmSln.Default;
}
else
{
fn.IsEnableFWC = FrmWorkCheckSta.Enable;
fn.FrmSln = FrmSln.Readonly;
}
fn.FK_Node = nd.NodeID;
fn.FK_Flow = flowNo;
fn.FrmSln = FrmSln.Readonly;
fn.setMyPK(fn.FK_Frm + "_" + fn.FK_Node + "_" + fn.FK_Flow);
fn.Save(); //执行保存.
}
}
}
if (this.FlowDevModel == FlowDevModel.SDKFrmSelfPK || this.FlowDevModel == FlowDevModel.SDKFrmWorkID)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No);
foreach (Node nd in nds)
{
nd.HisFormType = NodeFormType.SDKForm;
nd.FormUrl = fl.FrmUrl;
nd.DirectUpdate();
}
}
if (this.FlowDevModel == FlowDevModel.SelfFrm)
{
Nodes nds = new Nodes();
nds.Retrieve(NodeAttr.FK_Flow, fl.No);
foreach (Node nd in nds)
{
nd.HisFormType = NodeFormType.SDKForm;
nd.FormUrl = fl.FrmUrl;
nd.DirectUpdate();
}
}
///保存模式.
SaveModel(this.FlowDevModel);
//返回流程编号
return flowNo;
}
/// <summary>
/// 保存模式
/// </summary>
/// <param name="val"></param>
public void SaveModel(FlowDevModel val)
{
string pk = "FlowDevModel_" + WebUser.No;
string sql = "SELECT Val FROM Sys_GloVar WHERE No='" + pk + "'";
int valInt = DBAccess.RunSQLReturnValInt(sql, 1);
if (valInt == (int)val)
return;
sql = "UPDATE Sys_GloVar SET Val=" + (int)val + " WHERE No='" + pk + "'";
int myval = DBAccess.RunSQL(sql);
if (myval == 1)
return;
sql = "INSERT INTO Sys_GloVar (No,Name,Val) VALUES('" + pk + "','FlowDevModel','" + (int)val + "')";
DBAccess.RunSQL(sql);
}
/// <summary>
/// 创建流程-早期版本模式
/// </summary>
/// <returns></returns>
public string Default_NewFlowMode_0()
{
try
{
int runModel = this.GetRequestValInt("RunModel");
string FlowName = this.GetRequestVal("FlowName");
string FlowSort = this.GetRequestVal("FlowSort").Trim();
FlowSort = FlowSort.Trim();
int DataStoreModel = this.GetRequestValInt("DataStoreModel");
string PTable = this.GetRequestVal("PTable");
string FlowMark = this.GetRequestVal("FlowMark");
int FlowFrmModel = this.GetRequestValInt("FlowFrmModel");
string FrmUrl = this.GetRequestVal("FrmUrl");
string FlowVersion = this.GetRequestVal("FlowVersion");
string flowNo = BP.WF.Template.TemplateGlo.NewFlowTemplate(FlowSort, FlowName,
Template.DataStoreModel.SpecTable, PTable, FlowMark);
Flow fl = new Flow(flowNo);
//清空WF_Emp 的StartFlows ,让其重新计算.
// DBAccess.RunSQL("UPDATE WF_Emp Set StartFlows =''");
return flowNo;
}
catch (Exception ex)
{
return "err@" + ex.Message;
}
}
}
}