From 16dae39eae73922f431727ea1a7625275e26c375 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Mon, 6 Feb 2017 18:02:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/Extention/WF_Runtime.cs | 7 - OpenAuth.App/Extention/WF_RuntimeInitModel.cs | 8 +- OpenAuth.App/Extention/WF_RuntimeModel.cs | 7 - OpenAuth.App/OpenAuth.App.csproj | 1 - OpenAuth.App/WFProcessInstanceService.cs | 941 +++++++++++++++++ OpenAuth.App/WFRuntimeService.cs | 973 ------------------ .../Controllers/FlowLaunchController.cs | 4 +- .../Controllers/FlowProcessController.cs | 4 +- .../Content/scripts/utils/learun-applayout.js | 4 +- OpenAuth.UnitTest/TestWorkflow.cs | 5 +- 10 files changed, 951 insertions(+), 1003 deletions(-) delete mode 100644 OpenAuth.App/WFRuntimeService.cs diff --git a/OpenAuth.App/Extention/WF_Runtime.cs b/OpenAuth.App/Extention/WF_Runtime.cs index f487cdc4..ff0e5fef 100644 --- a/OpenAuth.App/Extention/WF_Runtime.cs +++ b/OpenAuth.App/Extention/WF_Runtime.cs @@ -5,13 +5,6 @@ using Infrastructure; namespace OpenAuth.App.Extention { - /// - /// 版 本 6.1 - /// Copyright (c) 2013-2016 上海力软信息技术有限公司 - /// 创建人:陈彬彬 - /// 日 期:2016.03.04 16:58 - /// 描 述:工作流流程流转操作类 - /// public class WF_Runtime : IWF_Runtime { private WF_RuntimeModel _runtimeModel = null; diff --git a/OpenAuth.App/Extention/WF_RuntimeInitModel.cs b/OpenAuth.App/Extention/WF_RuntimeInitModel.cs index 3587df0a..58490976 100644 --- a/OpenAuth.App/Extention/WF_RuntimeInitModel.cs +++ b/OpenAuth.App/Extention/WF_RuntimeInitModel.cs @@ -2,13 +2,7 @@ namespace OpenAuth.App.Extention { - /// - /// 版 本 6.1 - /// Copyright (c) 2013-2016 上海力软信息技术有限公司 - /// 创建人:陈彬彬 - /// 日 期:2016.03.04 16:58 - /// 描 述:工作流流程流转初始化模型类 - /// + public class WF_RuntimeInitModel { /// diff --git a/OpenAuth.App/Extention/WF_RuntimeModel.cs b/OpenAuth.App/Extention/WF_RuntimeModel.cs index 771de1c1..09673e19 100644 --- a/OpenAuth.App/Extention/WF_RuntimeModel.cs +++ b/OpenAuth.App/Extention/WF_RuntimeModel.cs @@ -2,13 +2,6 @@ namespace OpenAuth.App.Extention { - /// - /// 版 本 6.1 - /// Copyright (c) 2013-2016 上海力软信息技术有限公司 - /// 创建人:陈彬彬 - /// 日 期:2016.03.04 16:58 - /// 描 述:工作流流程流转模型类 - /// public class WF_RuntimeModel { /// diff --git a/OpenAuth.App/OpenAuth.App.csproj b/OpenAuth.App/OpenAuth.App.csproj index f26f1fa4..12eccaa0 100644 --- a/OpenAuth.App/OpenAuth.App.csproj +++ b/OpenAuth.App/OpenAuth.App.csproj @@ -88,7 +88,6 @@ - diff --git a/OpenAuth.App/WFProcessInstanceService.cs b/OpenAuth.App/WFProcessInstanceService.cs index 6af31cec..966b1730 100644 --- a/OpenAuth.App/WFProcessInstanceService.cs +++ b/OpenAuth.App/WFProcessInstanceService.cs @@ -1,6 +1,9 @@ using System; +using System.Collections.Generic; using System.Linq; +using Infrastructure; using OpenAuth.App.Extention; +using OpenAuth.App.SSO; using OpenAuth.App.ViewModel; using OpenAuth.Domain; using OpenAuth.Domain.Interface; @@ -355,5 +358,943 @@ namespace OpenAuth.App return result; } + + + #region 流程处理API + /// + /// 创建一个实例 + /// + /// 进程GUID + /// 模板信息ID + /// + /// 进程编号 + /// 自定义名称 + /// 备注 + /// 表单数据信息 + /// + public bool CreateInstance(Guid processId, Guid schemeInfoId, WFProcessInstance WFProcessInstance, string frmData = null) + { + + try + { + WFSchemeInfo WFSchemeInfo = _unitWork.FindSingle(u => u.Id == schemeInfoId); + WFSchemeContent WFSchemeContent = _unitWork.FindSingle(u => + u.SchemeInfoId == schemeInfoId && u.SchemeVersion == WFSchemeInfo.SchemeVersion); + + WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() + { + schemeContent = WFSchemeContent.SchemeContent, + currentNodeId = "", + frmData = frmData, + processId = processId + }; + IWF_Runtime wfruntime = null; + + if (frmData == null) + { + throw new Exception("自定义表单需要提交表单数据"); + } + else + { + wfruntime = new WF_Runtime(wfRuntimeInitModel); + } + + + var user = AuthUtil.GetCurrentUser(); + #region 实例信息 + WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; + WFProcessInstance.ActivityType = wfruntime.GetStatus();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 + WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; + WFProcessInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; + WFProcessInstance.SchemeType = WFSchemeInfo.SchemeType; + WFProcessInstance.FrmType = WFSchemeInfo.FrmType; + WFProcessInstance.EnabledMark = 1;//正式运行 + WFProcessInstance.CreateUserId = user.User.Id.ToString(); + WFProcessInstance.CreateUserName = user.User.Account; + WFProcessInstance.MakerList = (wfruntime.GetStatus() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 + WFProcessInstance.IsFinish = (wfruntime.GetStatus() == 4 ? 1 : 0); + #endregion + + #region 实例模板 + var data = new + { + SchemeContent = WFSchemeContent.SchemeContent, + frmData = frmData + }; + WFProcessScheme WFProcessScheme = new WFProcessScheme + { + SchemeInfoId = schemeInfoId, + SchemeVersion = WFSchemeInfo.SchemeVersion, + ProcessType = 1,//1正式,0草稿 + SchemeContent = data.ToJson().ToString() + }; + #endregion + + #region 流程操作记录 + WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); + processOperationHistoryEntity.Content = "【创建】" + user.User.Name + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; + #endregion + + #region 流转记录 + WFProcessTransitionHistory processTransitionHistoryEntity = new WFProcessTransitionHistory(); + processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; + processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; + processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; + processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; + processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; + processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; + processTransitionHistoryEntity.TransitionSate = 0; + processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); + #endregion + + #region 委托记录 + //List delegateRecordEntitylist = GetDelegateRecordList(schemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); + //WFProcessInstance.MakerList += delegateUserList; + #endregion + + SaveProcess(wfruntime.runtimeModel, WFProcessInstance, WFProcessScheme, processOperationHistoryEntity, processTransitionHistoryEntity); + + return true; + } + catch + { + throw; + } + + } + /// + /// 创建一个实例(草稿创建) + /// + /// + /// + /// + /// + /// + /// + public bool CreateInstance(WFProcessInstance WFProcessInstance, string frmData = null) + { + try + { + WFProcessInstance _WFProcessInstance = GetEntity(WFProcessInstance.Id); + WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u => u.Id == WFProcessInstance.ProcessSchemeId); + dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; + WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() + { + schemeContent = schemeContentJson.SchemeContent.Value, + currentNodeId = "", + frmData = frmData, + processId = WFProcessScheme.Id + }; + IWF_Runtime wfruntime = null; + + if (frmData == null) + { + throw new Exception("自定义表单需要提交表单数据"); + } + else + { + wfruntime = new WF_Runtime(wfRuntimeInitModel); + } + + + #region 实例信息 + WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; + WFProcessInstance.ActivityType = wfruntime.GetStatus();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 + WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; + WFProcessInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; + WFProcessInstance.EnabledMark = 1;//正式运行 + WFProcessInstance.MakerList = (wfruntime.GetStatus() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 + WFProcessInstance.IsFinish = (wfruntime.GetStatus() == 4 ? 1 : 0); + #endregion + + #region 实例模板 + var data = new + { + SchemeContent = schemeContentJson.SchemeContent.Value, + frmData = frmData + }; + WFProcessScheme.ProcessType = 1;//1正式,0草稿 + WFProcessScheme.SchemeContent = data.ToJson().ToString(); + #endregion + + #region 流程操作记录 + WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); + processOperationHistoryEntity.Content = "【创建】" + "todo name" + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; + #endregion + + #region 流转记录 + WFProcessTransitionHistory processTransitionHistoryEntity = new WFProcessTransitionHistory(); + processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; + processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; + processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; + processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; + processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; + processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; + processTransitionHistoryEntity.TransitionSate = 0; + processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); + #endregion + + #region 委托记录 + //List delegateRecordEntitylist = GetDelegateRecordList(WFProcessScheme.SchemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); + //WFProcessInstance.MakerList += delegateUserList; + #endregion + + SaveProcess(wfruntime.runtimeModel, WFProcessInstance, WFProcessScheme, processOperationHistoryEntity, processTransitionHistoryEntity); + return true; + } + catch + { + throw; + } + } + /// + /// 编辑表单再次提交(驳回后处理) + /// + /// + /// + /// + /// + public bool EditionInstance(Guid processId, string description, string frmData = null) + { + try + { + WFProcessInstance WFProcessInstance = GetEntity(processId); + WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u => u.Id == WFProcessInstance.ProcessSchemeId); + dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; + var data = new + { + SchemeContent = schemeContentJson.SchemeContent.Value, + frmData = frmData + }; + WFProcessScheme.SchemeContent = data.ToJson().ToString(); + + WFProcessInstance.IsFinish = 0; + if (string.IsNullOrEmpty(description)) + { + WFProcessInstance.Description = description; + } + WFProcessInstance.CreateDate = DateTime.Now; + + #region 流程操作记录 + WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); + processOperationHistoryEntity.Content = "【创建】" + "todo name" + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; + #endregion + + #region 委托记录 + //List delegateRecordEntitylist = GetDelegateRecordList(WFProcessScheme.SchemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); + //WFProcessInstance.MakerList += delegateUserList; + #endregion + + SaveProcess(WFProcessInstance, WFProcessScheme, processOperationHistoryEntity); + + return true; + } + catch + { + throw; + } + } + /// + /// 创建一个草稿 + /// + /// + /// + /// + /// + /// + /// + /// + /// + public bool CreateRoughdraft(Guid processId, Guid schemeInfoId, WFProcessInstance WFProcessInstance, string frmData = null) + { + try + { + WFSchemeInfo WFSchemeInfo = _unitWork.FindSingle(u => u.Id == schemeInfoId); + WFSchemeContent WFSchemeContent = _unitWork.FindSingle(u => u.SchemeInfoId == schemeInfoId + && u.SchemeVersion == WFSchemeInfo.SchemeVersion); + + WFProcessInstance.ActivityId = ""; + WFProcessInstance.ActivityName = ""; + WFProcessInstance.ActivityType = 0;//开始节点 + WFProcessInstance.IsFinish = 0; + WFProcessInstance.SchemeType = WFSchemeInfo.SchemeType; + WFProcessInstance.EnabledMark = 3;//草稿 + WFProcessInstance.CreateDate = DateTime.Now; + WFProcessInstance.FrmType = WFSchemeInfo.FrmType; + + WFProcessScheme WFProcessScheme = new WFProcessScheme(); + WFProcessScheme.SchemeInfoId = schemeInfoId; + WFProcessScheme.SchemeVersion = WFSchemeInfo.SchemeVersion; + WFProcessScheme.ProcessType = WFProcessInstance.EnabledMark; + var data = new + { + SchemeContent = WFSchemeContent.SchemeContent, + frmData = frmData + }; + WFProcessScheme.SchemeContent = data.ToJson(); + + SaveProcess(processId, WFProcessInstance, WFProcessScheme); + + return true; + } + catch + { + throw; + } + } + /// + /// 创建一个草稿 + /// + /// + /// + /// + public bool EditionRoughdraft(WFProcessInstance WFProcessInstance, string frmData = null) + { + try + { + WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u => u.Id == WFProcessInstance.ProcessSchemeId); + dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; + var data = new + { + SchemeContent = schemeContentJson.SchemeContent.Value, + frmData = frmData + }; + WFProcessScheme.SchemeContent = data.ToJson().ToString(); + WFProcessInstance.IsFinish = 0; + WFProcessInstance.CreateDate = DateTime.Now; + SaveProcess(WFProcessInstance.Id, WFProcessInstance, WFProcessScheme); + return true; + } + catch + { + throw; + } + } + /// + /// 节点审核 + /// + /// + /// + public bool NodeVerification(Guid processId, bool flag, string description = "") + { + bool _res = false; + try + { + string _sqlstr = "", _dbbaseId = ""; + WFProcessInstance WFProcessInstance = GetEntity(processId); + WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u => u.Id == WFProcessInstance.ProcessSchemeId); + WFProcessOperationHistory WFProcessOperationHistory = new WFProcessOperationHistory();//操作记录 + WFProcessTransitionHistory processTransitionHistoryEntity = null;//流转记录 + + dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; + WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() + { + schemeContent = schemeContentJson.SchemeContent.Value, + currentNodeId = WFProcessInstance.ActivityId, + frmData = schemeContentJson.frmData.Value, + previousId = WFProcessInstance.PreviousId, + processId = processId + }; + IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel); + + + #region 会签 + if (WFProcessInstance.ActivityType == 0)//会签 + { + wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1, "");//标记当前节点通过 + ///寻找需要审核的节点Id + string _VerificationNodeId = ""; + List _nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.currentNodeId); + string _makerList = ""; + foreach (string item in _nodelist) + { + _makerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[item], wfruntime.runtimeModel.processId); + if (_makerList != "-1") + { + foreach (string one in _makerList.Split(',')) + { + if (AuthUtil.GetUserName() == one || AuthUtil.GetUserName().IndexOf(one) != -1) + { + _VerificationNodeId = item; + break; + } + } + } + } + + if (_VerificationNodeId != "") + { + if (flag) + { + WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; + } + else + { + WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; + } + + string _Confluenceres = wfruntime.NodeConfluence(_VerificationNodeId, flag, AuthUtil.GetUserName(), description); + var _data = new + { + SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), + frmData = (WFProcessInstance.FrmType == 0 ? wfruntime.runtimeModel.frmData : null) + }; + WFProcessScheme.SchemeContent = _data.ToJson().ToString(); + switch (_Confluenceres) + { + case "-1"://不通过 + WFProcessInstance.IsFinish = 3; + break; + case "1"://等待 + break; + default://通过 + WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; + WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; + WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType;//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 + WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; + WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); + WFProcessInstance.MakerList = (wfruntime.runtimeModel.nextNodeType == 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 + + #region 流转记录 + processTransitionHistoryEntity = new WFProcessTransitionHistory(); + processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; + processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; + processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; + processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; + processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; + processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; + processTransitionHistoryEntity.TransitionSate = 0; + processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); + #endregion + + + + if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) + { + _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; + _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; + } + break; + } + } + else + { + throw (new Exception("审核异常,找不到审核节点")); + } + } + #endregion + + #region 一般审核 + else//一般审核 + { + if (flag) + { + wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1, AuthUtil.GetUserName(), description); + WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; + WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; + WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType;//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 + WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; + WFProcessInstance.MakerList = wfruntime.runtimeModel.nextNodeType == 4 ? "" : GetMakerList(wfruntime);//当前节点可执行的人信息 + WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); + #region 流转记录 + + processTransitionHistoryEntity = new WFProcessTransitionHistory + { + FromNodeId = wfruntime.runtimeModel.currentNodeId, + FromNodeName = wfruntime.runtimeModel.currentNode.name.Value, + FromNodeType = wfruntime.runtimeModel.currentNodeType, + ToNodeId = wfruntime.runtimeModel.nextNodeId, + ToNodeName = wfruntime.runtimeModel.nextNode.name.Value, + ToNodeType = wfruntime.runtimeModel.nextNodeType, + TransitionSate = 0 + }; + processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); + #endregion + + + + if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) + { + _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; + _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; + } + + WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; + } + else + { + WFProcessInstance.IsFinish = 3; //表示该节点不同意 + wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, -1, AuthUtil.GetUserName(), description); + + WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; + } + var data = new + { + SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), + frmData = wfruntime.runtimeModel.frmData + }; + WFProcessScheme.SchemeContent = data.ToJson(); + } + #endregion + + _res = true; + SaveProcess(_sqlstr, _dbbaseId, WFProcessInstance, WFProcessScheme, WFProcessOperationHistory, processTransitionHistoryEntity); + return _res; + } + catch + { + throw; + } + } + /// + /// 驳回 + /// + /// + /// + /// + /// + public bool NodeReject(Guid processId, string nodeId, string description = "") + { + try + { + WFProcessInstance WFProcessInstance = GetEntity(processId); + WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u => u.Id == WFProcessInstance.ProcessSchemeId); + WFProcessOperationHistory WFProcessOperationHistory = new WFProcessOperationHistory(); + WFProcessTransitionHistory processTransitionHistoryEntity = null; + dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; + WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() + { + schemeContent = schemeContentJson.SchemeContent.Value, + currentNodeId = WFProcessInstance.ActivityId, + frmData = schemeContentJson.frmData.Value, + previousId = WFProcessInstance.PreviousId, + processId = processId + }; + IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel); + + + string resnode = ""; + if (nodeId == "") + { + resnode = wfruntime.RejectNode(); + } + else + { + resnode = nodeId; + } + wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 0, AuthUtil.GetUserName(), description); + WFProcessInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单) + if (resnode != "") + { + WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; + WFProcessInstance.ActivityId = resnode; + WFProcessInstance.ActivityType = wfruntime.GetNodeStatus(resnode);//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 + WFProcessInstance.ActivityName = wfruntime.runtimeModel.nodeDictionary[resnode].name; + WFProcessInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[resnode], WFProcessInstance.PreviousId);//当前节点可执行的人信息 + #region 流转记录 + processTransitionHistoryEntity = new WFProcessTransitionHistory(); + processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; + processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; + processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; + processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; + processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; + processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; + processTransitionHistoryEntity.TransitionSate = 1;// + processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); + #endregion + } + var data = new + { + SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), + frmData = (WFProcessInstance.FrmType == 0 ? wfruntime.runtimeModel.frmData : null) + }; + WFProcessScheme.SchemeContent = data.ToJson().ToString(); + WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + description; + + SaveProcess(WFProcessInstance, WFProcessScheme, WFProcessOperationHistory, processTransitionHistoryEntity); + return true; + } + catch + { + throw; + } + } + /// + /// 召回流程进程 + /// + /// + public void CallingBackProcess(Guid processId) + { + try + { + OperateVirtualProcess(processId, 2); + } + catch + { + throw; + } + } + /// + /// 终止一个实例(彻底删除) + /// + /// + /// + public void KillProcess(Guid processId) + { + try + { + _unitWork.Delete(u => u.Id == processId); + } + catch + { + throw; + } + } + /// + /// 获取某个节点(审核人所能看到的提交表单的权限) + /// + /// + /// + public string GetProcessSchemeContentByNodeId(string data, string nodeId) + { + try + { + List list = new List(); + dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象; + string schemeContent1 = schemeContentJson.SchemeContent.Value; + dynamic schemeContentJson1 = schemeContent1.ToJson(); + string FrmContent = schemeContentJson1.Frm.FrmContent.Value; + dynamic FrmContentJson = FrmContent.ToJson(); + + foreach (var item in schemeContentJson1.Flow.nodes) + { + if (item.id.Value == nodeId) + { + foreach (var item1 in item.setInfo.frmPermissionInfo) + { + foreach (var item2 in FrmContentJson) + { + if (item2.control_field.Value == item1.fieldid.Value) + { + if (item1.look.Value == true) + { + if (item1.down != null) + { + item2.down = item1.down.Value; + } + list.Add(item2); + } + break; + } + } + } + break; + } + } + schemeContentJson1.Frm.FrmContent = list.ToJson().ToString(); + schemeContentJson.SchemeContent = schemeContentJson1.ToString(); + return schemeContentJson.ToString(); + } + catch + { + throw; + } + } + /// + /// 获取某个节点(审核人所能看到的提交表单的权限) + /// + /// + /// + /// + public string GetProcessSchemeContentByUserId(string data, string userId) + { + try + { + List list = new List(); + dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象; + string schemeContent1 = schemeContentJson.SchemeContent.Value; + dynamic schemeContentJson1 = schemeContent1.ToJson(); + string FrmContent = schemeContentJson1.Frm.FrmContent.Value; + dynamic FrmContentJson = FrmContent.ToJson(); + + foreach (var item in schemeContentJson1.Flow.nodes) + { + if (item.setInfo != null && item.setInfo.UserId != null && item.setInfo.UserId.Value == userId) + { + foreach (var item1 in item.setInfo.frmPermissionInfo) + { + foreach (var item2 in FrmContentJson) + { + if (item2.control_field.Value == item1.fieldid.Value) + { + if (item1.look.Value == true) + { + if (item1.down != null) + { + item2.down = item1.down.Value; + } + list.Add(item2); + } + break; + } + } + } + break; + } + } + schemeContentJson1.Frm.FrmContent = list.ToJson().ToString(); + schemeContentJson.SchemeContent = schemeContentJson1.ToString(); + return schemeContentJson.ToString(); + } + catch + { + throw; + } + } + #endregion + + /// + /// 寻找该节点执行人 + /// + /// + /// + private string GetMakerList(IWF_Runtime wfruntime) + { + try + { + string makerList = ""; + if (wfruntime.runtimeModel.nextNodeId == "-1") + { + throw (new Exception("无法寻找到下一个节点")); + } + if (wfruntime.runtimeModel.nextNodeType == 0)//如果是会签节点 + { + List _nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.nextNodeId); + string _makerList = ""; + foreach (string item in _nodelist) + { + _makerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[item], wfruntime.runtimeModel.processId); + if (_makerList == "-1") + { + throw (new Exception("无法寻找到会签节点的审核者,请查看流程设计是否有问题!")); + } + else if (_makerList == "1") + { + throw (new Exception("会签节点的审核者不能为所有人,请查看流程设计是否有问题!")); + } + else + { + if (makerList != "") + { + makerList += ","; + } + makerList += _makerList; + } + } + } + else + { + makerList = GetMakerList(wfruntime.runtimeModel.nextNode, wfruntime.runtimeModel.processId); + if (makerList == "-1") + { + throw (new Exception("无法寻找到节点的审核者,请查看流程设计是否有问题!")); + } + } + + return makerList; + } + catch + { + throw; + } + } + /// + /// 寻找该节点执行人 + /// + /// + /// + private string GetMakerList(dynamic node, string processId) + { + try + { + string makerlsit = ""; + + if (node.setInfo == null) + { + makerlsit = "-1"; + } + else + { + if (node.setInfo.NodeDesignate.Value == "NodeDesignateType1")//所有成员 + { + makerlsit = "1"; + } + else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType2")//指定成员 + { + makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.role, makerlsit); + makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.post, makerlsit); + makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.usergroup, makerlsit); + makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.user, makerlsit); + + if (makerlsit == "") + { + makerlsit = "-1"; + } + } + //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType3")//发起者领导 + //{ + // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); + // if (string.IsNullOrEmpty(userEntity.ManagerId)) + // { + // makerlsit = "-1"; + // } + // else + // { + // makerlsit = userEntity.ManagerId; + // } + //} + //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType4")//前一步骤领导 + //{ + // WFProcessTransitionHistory transitionHistoryEntity = wfProcessTransitionHistoryService.GetEntity(processId, node.id.Value); + // UserEntity userEntity = userService.GetEntity(transitionHistoryEntity.CreateUserId); + // if (string.IsNullOrEmpty(userEntity.ManagerId)) + // { + // makerlsit = "-1"; + // } + // else + // { + // makerlsit = userEntity.ManagerId; + // } + //} + //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType5")//发起者部门领导 + //{ + // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); + // DepartmentEntity departmentEntity = departmentService.GetEntity(userEntity.DepartmentId); + + // if (string.IsNullOrEmpty(departmentEntity.ManagerId)) + // { + // makerlsit = "-1"; + // } + // else + // { + // makerlsit = departmentEntity.ManagerId; + // } + //} + //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType6")//发起者公司领导 + //{ + // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); + // OrganizeEntity organizeEntity = organizeService.GetEntity(userEntity.OrganizeId); + + // if (string.IsNullOrEmpty(organizeEntity.ManagerId)) + // { + // makerlsit = "-1"; + // } + // else + // { + // makerlsit = organizeEntity.ManagerId; + // } + //} + } + return makerlsit; + } + catch + { + throw; + } + } + /// + /// 将数组转化成逗号相隔的字串 + /// + /// + /// + /// + private string ArrwyToString(dynamic data, string Str) + { + string resStr = Str; + foreach (var item in data) + { + if (resStr != "") + { + resStr += ","; + } + resStr += item.Value; + } + return resStr; + } + + public WFProcessScheme GetProcessSchemeEntity(Guid keyValue) + { + return _unitWork.FindSingle(u => u.Id == keyValue); + } + + /// + /// 已办流程进度查看,根据当前访问人的权限查看表单内容 + /// 李玉宝于2017-01-20 15:35:13 + /// + /// The key value. + /// WFProcessScheme. + public WFProcessScheme GetProcessSchemeByUserId(Guid keyValue) + { + var entity = GetProcessSchemeEntity(keyValue); + entity.SchemeContent = GetProcessSchemeContentByUserId(entity.SchemeContent, AuthUtil.GetCurrentUser().User.Id.ToString()); + return entity; + } + + + /// + /// 已办流程进度查看,根据当前节点的权限查看表单内容 + /// 李玉宝于2017-01-20 15:34:35 + /// + /// The key value. + /// The node identifier. + /// WFProcessScheme. + public WFProcessScheme GetProcessSchemeEntityByNodeId(Guid keyValue, string nodeId) + { + var entity = GetProcessSchemeEntity(keyValue); + entity.SchemeContent = GetProcessSchemeContentByNodeId(entity.SchemeContent, nodeId); + return entity; + } + + public WFProcessInstance GetProcessInstanceEntity(Guid keyValue) + { + return _unitWork.FindSingle(u => u.Id == keyValue); + } + + /// + /// 审核流程 + /// 李玉宝于2017-01-20 15:44:45 + /// + /// The process identifier. + /// The verification data. + public void VerificationProcess(Guid processId, string verificationData) + { + try + { + dynamic verificationDataJson = verificationData.ToJson(); + + //驳回 + if (verificationDataJson.VerificationFinally.Value == "3") + { + string _nodeId = ""; + if (verificationDataJson.NodeRejectStep != null) + { + _nodeId = verificationDataJson.NodeRejectStep.Value; + } + NodeReject(processId, _nodeId, verificationDataJson.VerificationOpinion.Value); + } + else if (verificationDataJson.VerificationFinally.Value == "2")//表示不同意 + { + NodeVerification(processId, false, verificationDataJson.VerificationOpinion.Value); + } + else if (verificationDataJson.VerificationFinally.Value == "1")//表示同意 + { + NodeVerification(processId, true, verificationDataJson.VerificationOpinion.Value); + } + } + catch + { + throw; + } + } } } diff --git a/OpenAuth.App/WFRuntimeService.cs b/OpenAuth.App/WFRuntimeService.cs deleted file mode 100644 index 9deb26d6..00000000 --- a/OpenAuth.App/WFRuntimeService.cs +++ /dev/null @@ -1,973 +0,0 @@ -using System; -using System.Collections.Generic; -using Infrastructure; -using OpenAuth.App.Extention; -using OpenAuth.App.SSO; -using OpenAuth.Domain; -using OpenAuth.Domain.Interface; - -namespace OpenAuth.App -{ - - - /// - /// 流程运行 - /// 李玉宝新增于2017-01-17 9:02:02 - /// - public class WFRuntimeService - { - private IUnitWork _unitWork; - private WFProcessInstanceService wfProcessInstanceService; - - public WFRuntimeService(IUnitWork unitWork, WFProcessInstanceService service) - { - _unitWork = unitWork; - wfProcessInstanceService = service; - } - - private string delegateUserList = ""; - - #region 流程处理API - /// - /// 创建一个实例 - /// - /// 进程GUID - /// 模板信息ID - /// - /// 进程编号 - /// 自定义名称 - /// 备注 - /// 表单数据信息 - /// - public bool CreateInstance(Guid processId, Guid schemeInfoId, WFProcessInstance WFProcessInstance, string frmData = null) - { - - try - { - WFSchemeInfo WFSchemeInfo = _unitWork.FindSingle(u =>u.Id == schemeInfoId); - WFSchemeContent WFSchemeContent = _unitWork.FindSingle(u => - u.SchemeInfoId==schemeInfoId && u.SchemeVersion ==WFSchemeInfo.SchemeVersion); - - WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() - { - schemeContent = WFSchemeContent.SchemeContent, - currentNodeId = "", - frmData = frmData, - processId = processId - }; - IWF_Runtime wfruntime = null; - - if(frmData == null) - { - throw new Exception("自定义表单需要提交表单数据"); - } - else - { - wfruntime = new WF_Runtime(wfRuntimeInitModel); - } - - - var user = AuthUtil.GetCurrentUser(); - #region 实例信息 - WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; - WFProcessInstance.ActivityType = wfruntime.GetStatus();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 - WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; - WFProcessInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; - WFProcessInstance.SchemeType = WFSchemeInfo.SchemeType; - WFProcessInstance.FrmType = WFSchemeInfo.FrmType; - WFProcessInstance.EnabledMark = 1;//正式运行 - WFProcessInstance.CreateUserId = user.User.Id.ToString(); - WFProcessInstance.CreateUserName = user.User.Account; - WFProcessInstance.MakerList =(wfruntime.GetStatus() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 - WFProcessInstance.IsFinish = (wfruntime.GetStatus() == 4 ? 1 : 0); - #endregion - - #region 实例模板 - var data = new - { - SchemeContent = WFSchemeContent.SchemeContent, - frmData = frmData - }; - WFProcessScheme WFProcessScheme = new WFProcessScheme { - SchemeInfoId = schemeInfoId, - SchemeVersion = WFSchemeInfo.SchemeVersion, - ProcessType = 1,//1正式,0草稿 - SchemeContent = data.ToJson().ToString() - }; - #endregion - - #region 流程操作记录 - WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); - processOperationHistoryEntity.Content = "【创建】" + user.User.Name + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; - #endregion - - #region 流转记录 - WFProcessTransitionHistory processTransitionHistoryEntity = new WFProcessTransitionHistory(); - processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; - processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; - processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; - processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; - processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; - processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; - processTransitionHistoryEntity.TransitionSate =0; - processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); - #endregion - - #region 委托记录 - //List delegateRecordEntitylist = GetDelegateRecordList(schemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); - //WFProcessInstance.MakerList += delegateUserList; - #endregion - - wfProcessInstanceService.SaveProcess(wfruntime.runtimeModel, WFProcessInstance, WFProcessScheme, processOperationHistoryEntity, processTransitionHistoryEntity); - - return true; - } - catch - { - throw; - } - - } - /// - /// 创建一个实例(草稿创建) - /// - /// - /// - /// - /// - /// - /// - public bool CreateInstance(WFProcessInstance WFProcessInstance, string frmData = null) - { - try - { - WFProcessInstance _WFProcessInstance = wfProcessInstanceService.GetEntity(WFProcessInstance.Id); - WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u =>u.Id ==WFProcessInstance.ProcessSchemeId); - dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; - WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() - { - schemeContent = schemeContentJson.SchemeContent.Value, - currentNodeId = "", - frmData = frmData, - processId = WFProcessScheme.Id - }; - IWF_Runtime wfruntime = null; - - if (frmData == null) - { - throw new Exception("自定义表单需要提交表单数据"); - } - else - { - wfruntime = new WF_Runtime(wfRuntimeInitModel); - } - - - #region 实例信息 - WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; - WFProcessInstance.ActivityType = wfruntime.GetStatus();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 - WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; - WFProcessInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; - WFProcessInstance.EnabledMark = 1;//正式运行 - WFProcessInstance.MakerList = (wfruntime.GetStatus() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 - WFProcessInstance.IsFinish = (wfruntime.GetStatus() == 4 ? 1 : 0); - #endregion - - #region 实例模板 - var data = new - { - SchemeContent = schemeContentJson.SchemeContent.Value, - frmData = frmData - }; - WFProcessScheme.ProcessType = 1;//1正式,0草稿 - WFProcessScheme.SchemeContent = data.ToJson().ToString(); - #endregion - - #region 流程操作记录 - WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); - processOperationHistoryEntity.Content = "【创建】" + "todo name" + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; - #endregion - - #region 流转记录 - WFProcessTransitionHistory processTransitionHistoryEntity = new WFProcessTransitionHistory(); - processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; - processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; - processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; - processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; - processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; - processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; - processTransitionHistoryEntity.TransitionSate = 0; - processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); - #endregion - - #region 委托记录 - //List delegateRecordEntitylist = GetDelegateRecordList(WFProcessScheme.SchemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); - //WFProcessInstance.MakerList += delegateUserList; - #endregion - - wfProcessInstanceService.SaveProcess(wfruntime.runtimeModel, WFProcessInstance, WFProcessScheme, processOperationHistoryEntity, processTransitionHistoryEntity); - return true; - } - catch - { - throw; - } - } - /// - /// 编辑表单再次提交(驳回后处理) - /// - /// - /// - /// - /// - public bool EditionInstance(Guid processId, string description, string frmData = null) - { - try - { - WFProcessInstance WFProcessInstance = wfProcessInstanceService.GetEntity(processId); - WFProcessScheme WFProcessScheme = _unitWork.FindSingle< WFProcessScheme>(u =>u.Id ==WFProcessInstance.ProcessSchemeId); - dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; - var data = new - { - SchemeContent = schemeContentJson.SchemeContent.Value, - frmData = frmData - }; - WFProcessScheme.SchemeContent = data.ToJson().ToString(); - - WFProcessInstance.IsFinish = 0; - if (string.IsNullOrEmpty(description)) - { - WFProcessInstance.Description = description; - } - WFProcessInstance.CreateDate = DateTime.Now; - - #region 流程操作记录 - WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); - processOperationHistoryEntity.Content = "【创建】" + "todo name" + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; - #endregion - - #region 委托记录 - //List delegateRecordEntitylist = GetDelegateRecordList(WFProcessScheme.SchemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); - //WFProcessInstance.MakerList += delegateUserList; - #endregion - - wfProcessInstanceService.SaveProcess(WFProcessInstance, WFProcessScheme, processOperationHistoryEntity); - - return true; - } - catch - { - throw; - } - } - /// - /// 创建一个草稿 - /// - /// - /// - /// - /// - /// - /// - /// - /// - public bool CreateRoughdraft(Guid processId, Guid schemeInfoId, WFProcessInstance WFProcessInstance, string frmData = null) - { - try - { - WFSchemeInfo WFSchemeInfo = _unitWork.FindSingle(u =>u.Id ==schemeInfoId); - WFSchemeContent WFSchemeContent = _unitWork.FindSingle(u =>u.SchemeInfoId ==schemeInfoId - && u.SchemeVersion ==WFSchemeInfo.SchemeVersion); - - WFProcessInstance.ActivityId = ""; - WFProcessInstance.ActivityName = ""; - WFProcessInstance.ActivityType = 0;//开始节点 - WFProcessInstance.IsFinish = 0; - WFProcessInstance.SchemeType = WFSchemeInfo.SchemeType; - WFProcessInstance.EnabledMark = 3;//草稿 - WFProcessInstance.CreateDate = DateTime.Now; - WFProcessInstance.FrmType = WFSchemeInfo.FrmType; - - WFProcessScheme WFProcessScheme = new WFProcessScheme(); - WFProcessScheme.SchemeInfoId = schemeInfoId; - WFProcessScheme.SchemeVersion = WFSchemeInfo.SchemeVersion; - WFProcessScheme.ProcessType = WFProcessInstance.EnabledMark; - var data = new - { - SchemeContent = WFSchemeContent.SchemeContent, - frmData = frmData - }; - WFProcessScheme.SchemeContent = data.ToJson(); - - wfProcessInstanceService.SaveProcess(processId,WFProcessInstance, WFProcessScheme); - - return true; - } - catch - { - throw; - } - } - /// - /// 创建一个草稿 - /// - /// - /// - /// - public bool EditionRoughdraft(WFProcessInstance WFProcessInstance, string frmData = null) - { - try - { - WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u =>u.Id ==WFProcessInstance.ProcessSchemeId); - dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; - var data = new - { - SchemeContent = schemeContentJson.SchemeContent.Value, - frmData = frmData - }; - WFProcessScheme.SchemeContent = data.ToJson().ToString(); - WFProcessInstance.IsFinish = 0; - WFProcessInstance.CreateDate = DateTime.Now; - wfProcessInstanceService.SaveProcess(WFProcessInstance.Id,WFProcessInstance, WFProcessScheme); - return true; - } - catch - { - throw; - } - } - /// - /// 节点审核 - /// - /// - /// - public bool NodeVerification(Guid processId, bool flag, string description = "") - { - bool _res = false; - try - { - string _sqlstr="", _dbbaseId=""; - WFProcessInstance WFProcessInstance = wfProcessInstanceService.GetEntity(processId); - WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u =>u.Id ==WFProcessInstance.ProcessSchemeId); - WFProcessOperationHistory WFProcessOperationHistory = new WFProcessOperationHistory();//操作记录 - WFProcessTransitionHistory processTransitionHistoryEntity = null;//流转记录 - - dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; - WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() - { - schemeContent = schemeContentJson.SchemeContent.Value, - currentNodeId = WFProcessInstance.ActivityId, - frmData = schemeContentJson.frmData.Value, - previousId = WFProcessInstance.PreviousId, - processId = processId - }; - IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel); - - - #region 会签 - if (WFProcessInstance.ActivityType == 0)//会签 - { - wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1,"");//标记当前节点通过 - ///寻找需要审核的节点Id - string _VerificationNodeId = ""; - List _nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.currentNodeId); - string _makerList = ""; - foreach (string item in _nodelist) - { - _makerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[item], wfruntime.runtimeModel.processId); - if (_makerList != "-1") - { - foreach (string one in _makerList.Split(',')) - { - if (AuthUtil.GetUserName() == one || AuthUtil.GetUserName().IndexOf(one) != -1) - { - _VerificationNodeId = item; - break; - } - } - } - } - - if (_VerificationNodeId != "") - { - if (flag) - { - WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; - } - else - { - WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; - } - - string _Confluenceres = wfruntime.NodeConfluence(_VerificationNodeId, flag, AuthUtil.GetUserName(), description); - var _data = new { - SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), - frmData = (WFProcessInstance.FrmType == 0?wfruntime.runtimeModel.frmData:null) - }; - WFProcessScheme.SchemeContent = _data.ToJson().ToString(); - switch (_Confluenceres) - { - case "-1"://不通过 - WFProcessInstance.IsFinish = 3; - break; - case "1"://等待 - break; - default://通过 - WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; - WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; - WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType;//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 - WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; - WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); - WFProcessInstance.MakerList = (wfruntime.runtimeModel.nextNodeType == 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 - - #region 流转记录 - processTransitionHistoryEntity = new WFProcessTransitionHistory(); - processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; - processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; - processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; - processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; - processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; - processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; - processTransitionHistoryEntity.TransitionSate = 0; - processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); - #endregion - - - - if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) - { - _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; - _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; - } - break; - } - } - else - { - throw(new Exception("审核异常,找不到审核节点")); - } - } - #endregion - - #region 一般审核 - else//一般审核 - { - if (flag) - { - wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1, AuthUtil.GetUserName(), description); - WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; - WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; - WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType;//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 - WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; - WFProcessInstance.MakerList = wfruntime.runtimeModel.nextNodeType == 4 ?"":GetMakerList(wfruntime);//当前节点可执行的人信息 - WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); - #region 流转记录 - - processTransitionHistoryEntity = new WFProcessTransitionHistory - { - FromNodeId = wfruntime.runtimeModel.currentNodeId, - FromNodeName = wfruntime.runtimeModel.currentNode.name.Value, - FromNodeType = wfruntime.runtimeModel.currentNodeType, - ToNodeId = wfruntime.runtimeModel.nextNodeId, - ToNodeName = wfruntime.runtimeModel.nextNode.name.Value, - ToNodeType = wfruntime.runtimeModel.nextNodeType, - TransitionSate = 0 - }; - processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); - #endregion - - - - if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) - { - _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; - _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; - } - - WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; - } - else - { - WFProcessInstance.IsFinish = 3; //表示该节点不同意 - wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, -1, AuthUtil.GetUserName(), description); - - WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; - } - var data = new - { - SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), - frmData = (WFProcessInstance.FrmType == 0 ? wfruntime.runtimeModel.frmData : null) - }; - WFProcessScheme.SchemeContent = data.ToJson().ToString(); - } - #endregion - - _res = true; - wfProcessInstanceService.SaveProcess(_sqlstr, _dbbaseId,WFProcessInstance, WFProcessScheme, WFProcessOperationHistory, processTransitionHistoryEntity); - return _res; - } - catch { - throw; - } - } - /// - /// 驳回 - /// - /// - /// - /// - /// - public bool NodeReject(Guid processId,string nodeId, string description = "") - { - try - { - WFProcessInstance WFProcessInstance = wfProcessInstanceService.GetEntity(processId); - WFProcessScheme WFProcessScheme = _unitWork.FindSingle(u =>u.Id ==WFProcessInstance.ProcessSchemeId); - WFProcessOperationHistory WFProcessOperationHistory = new WFProcessOperationHistory(); - WFProcessTransitionHistory processTransitionHistoryEntity = null; - dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson();//获取工作流模板内容的json对象; - WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() - { - schemeContent = schemeContentJson.SchemeContent.Value, - currentNodeId = WFProcessInstance.ActivityId, - frmData = schemeContentJson.frmData.Value, - previousId = WFProcessInstance.PreviousId, - processId = processId - }; - IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel); - - - string resnode = ""; - if (nodeId == "") - { - resnode = wfruntime.RejectNode(); - } - else - { - resnode = nodeId; - } - wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 0, AuthUtil.GetUserName(), description); - WFProcessInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单) - if (resnode != "") - { - WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; - WFProcessInstance.ActivityId = resnode; - WFProcessInstance.ActivityType = wfruntime.GetNodeStatus(resnode);//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 - WFProcessInstance.ActivityName = wfruntime.runtimeModel.nodeDictionary[resnode].name; - WFProcessInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[resnode], WFProcessInstance.PreviousId);//当前节点可执行的人信息 - #region 流转记录 - processTransitionHistoryEntity = new WFProcessTransitionHistory(); - processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; - processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; - processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; - processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; - processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; - processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; - processTransitionHistoryEntity.TransitionSate = 1;// - processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); - #endregion - } - var data = new - { - SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), - frmData = (WFProcessInstance.FrmType == 0 ? wfruntime.runtimeModel.frmData : null) - }; - WFProcessScheme.SchemeContent = data.ToJson().ToString(); - WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + description; - - wfProcessInstanceService.SaveProcess(WFProcessInstance, WFProcessScheme, WFProcessOperationHistory, processTransitionHistoryEntity); - return true; - } - catch - { - throw; - } - } - /// - /// 召回流程进程 - /// - /// - public void CallingBackProcess(Guid processId) - { - try - { - wfProcessInstanceService.OperateVirtualProcess(processId,2); - } - catch - { - throw; - } - } - /// - /// 终止一个实例(彻底删除) - /// - /// - /// - public void KillProcess(Guid processId) - { - try - { - _unitWork.Delete(u =>u.Id == processId); - } - catch - { - throw; - } - } - /// - /// 获取某个节点(审核人所能看到的提交表单的权限) - /// - /// - /// - public string GetProcessSchemeContentByNodeId(string data, string nodeId) - { - try - { - List list = new List(); - dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象; - string schemeContent1 = schemeContentJson.SchemeContent.Value; - dynamic schemeContentJson1 = schemeContent1.ToJson(); - string FrmContent = schemeContentJson1.Frm.FrmContent.Value; - dynamic FrmContentJson = FrmContent.ToJson(); - - foreach (var item in schemeContentJson1.Flow.nodes) - { - if (item.id.Value == nodeId) - { - foreach (var item1 in item.setInfo.frmPermissionInfo) - { - foreach (var item2 in FrmContentJson) - { - if (item2.control_field.Value == item1.fieldid.Value) - { - if (item1.look.Value == true) - { - if (item1.down != null) - { - item2.down = item1.down.Value; - } - list.Add(item2); - } - break; - } - } - } - break; - } - } - schemeContentJson1.Frm.FrmContent = list.ToJson().ToString(); - schemeContentJson.SchemeContent = schemeContentJson1.ToString(); - return schemeContentJson.ToString(); - } - catch - { - throw; - } - } - /// - /// 获取某个节点(审核人所能看到的提交表单的权限) - /// - /// - /// - /// - public string GetProcessSchemeContentByUserId(string data, string userId) - { - try - { - List list = new List(); - dynamic schemeContentJson = data.ToJson();//获取工作流模板内容的json对象; - string schemeContent1 = schemeContentJson.SchemeContent.Value; - dynamic schemeContentJson1 = schemeContent1.ToJson(); - string FrmContent = schemeContentJson1.Frm.FrmContent.Value; - dynamic FrmContentJson = FrmContent.ToJson(); - - foreach (var item in schemeContentJson1.Flow.nodes) - { - if (item.setInfo != null && item.setInfo.UserId != null && item.setInfo.UserId.Value == userId) - { - foreach (var item1 in item.setInfo.frmPermissionInfo) - { - foreach (var item2 in FrmContentJson) - { - if (item2.control_field.Value == item1.fieldid.Value) - { - if (item1.look.Value == true) - { - if (item1.down != null) - { - item2.down = item1.down.Value; - } - list.Add(item2); - } - break; - } - } - } - break; - } - } - schemeContentJson1.Frm.FrmContent = list.ToJson().ToString(); - schemeContentJson.SchemeContent = schemeContentJson1.ToString(); - return schemeContentJson.ToString(); - } - catch - { - throw; - } - } - #endregion - - /// - /// 寻找该节点执行人 - /// - /// - /// - private string GetMakerList(IWF_Runtime wfruntime) - { - try - { - string makerList = ""; - if (wfruntime.runtimeModel.nextNodeId == "-1") - { - throw (new Exception("无法寻找到下一个节点")); - } - if (wfruntime.runtimeModel.nextNodeType == 0)//如果是会签节点 - { - List _nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.nextNodeId); - string _makerList = ""; - foreach (string item in _nodelist) - { - _makerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[item], wfruntime.runtimeModel.processId); - if (_makerList == "-1") - { - throw (new Exception("无法寻找到会签节点的审核者,请查看流程设计是否有问题!")); - } - else if (_makerList == "1") - { - throw (new Exception("会签节点的审核者不能为所有人,请查看流程设计是否有问题!")); - } - else - { - if (makerList != "") - { - makerList += ","; - } - makerList += _makerList; - } - } - } - else - { - makerList = GetMakerList(wfruntime.runtimeModel.nextNode, wfruntime.runtimeModel.processId); - if (makerList == "-1") - { - throw (new Exception("无法寻找到节点的审核者,请查看流程设计是否有问题!")); - } - } - - return makerList; - } - catch - { - throw; - } - } - /// - /// 寻找该节点执行人 - /// - /// - /// - private string GetMakerList(dynamic node, string processId) - { - try - { - string makerlsit = ""; - - if (node.setInfo == null) - { - makerlsit = "-1"; - } - else - { - if (node.setInfo.NodeDesignate.Value == "NodeDesignateType1")//所有成员 - { - makerlsit = "1"; - } - else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType2")//指定成员 - { - makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.role, makerlsit); - makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.post, makerlsit); - makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.usergroup, makerlsit); - makerlsit = ArrwyToString(node.setInfo.NodeDesignateData.user, makerlsit); - - if (makerlsit == "") - { - makerlsit = "-1"; - } - } - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType3")//发起者领导 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // if (string.IsNullOrEmpty(userEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = userEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType4")//前一步骤领导 - //{ - // WFProcessTransitionHistory transitionHistoryEntity = wfProcessTransitionHistoryService.GetEntity(processId, node.id.Value); - // UserEntity userEntity = userService.GetEntity(transitionHistoryEntity.CreateUserId); - // if (string.IsNullOrEmpty(userEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = userEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType5")//发起者部门领导 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // DepartmentEntity departmentEntity = departmentService.GetEntity(userEntity.DepartmentId); - - // if (string.IsNullOrEmpty(departmentEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = departmentEntity.ManagerId; - // } - //} - //else if (node.setInfo.NodeDesignate.Value == "NodeDesignateType6")//发起者公司领导 - //{ - // UserEntity userEntity = userService.GetEntity(OperatorProvider.Provider.Current().UserId); - // OrganizeEntity organizeEntity = organizeService.GetEntity(userEntity.OrganizeId); - - // if (string.IsNullOrEmpty(organizeEntity.ManagerId)) - // { - // makerlsit = "-1"; - // } - // else - // { - // makerlsit = organizeEntity.ManagerId; - // } - //} - } - return makerlsit; - } - catch - { - throw; - } - } - /// - /// 将数组转化成逗号相隔的字串 - /// - /// - /// - /// - private string ArrwyToString(dynamic data, string Str) - { - string resStr = Str; - foreach (var item in data) - { - if (resStr != "") - { - resStr += ","; - } - resStr += item.Value; - } - return resStr; - } - - public WFProcessScheme GetProcessSchemeEntity(Guid keyValue) - { - return _unitWork.FindSingle(u => u.Id == keyValue); - } - - /// - /// 已办流程进度查看,根据当前访问人的权限查看表单内容 - /// 李玉宝于2017-01-20 15:35:13 - /// - /// The key value. - /// WFProcessScheme. - public WFProcessScheme GetProcessSchemeByUserId(Guid keyValue) - { - var entity = GetProcessSchemeEntity(keyValue); - entity.SchemeContent = GetProcessSchemeContentByUserId(entity.SchemeContent, AuthUtil.GetCurrentUser().User.Id.ToString()); - return entity; - } - - - /// - /// 已办流程进度查看,根据当前节点的权限查看表单内容 - /// 李玉宝于2017-01-20 15:34:35 - /// - /// The key value. - /// The node identifier. - /// WFProcessScheme. - public WFProcessScheme GetProcessSchemeEntityByNodeId(Guid keyValue, string nodeId) - { - var entity = GetProcessSchemeEntity(keyValue); - entity.SchemeContent = GetProcessSchemeContentByNodeId(entity.SchemeContent, nodeId); - return entity; - } - - public WFProcessInstance GetProcessInstanceEntity(Guid keyValue) - { - return _unitWork.FindSingle(u => u.Id == keyValue); - } - - public void DeleteProcess(Guid keyValue) - { - var entity = _unitWork.FindSingle(u => u.Id == keyValue); - _unitWork.Delete(u =>u.Id == entity.ProcessSchemeId); - _unitWork.Delete(u =>u.Id == keyValue); - - } - - /// - /// 审核流程 - /// 李玉宝于2017-01-20 15:44:45 - /// - /// The process identifier. - /// The verification data. - public void VerificationProcess(Guid processId, string verificationData) - { - try - { - dynamic verificationDataJson = verificationData.ToJson(); - - //驳回 - if (verificationDataJson.VerificationFinally.Value == "3") - { - string _nodeId = ""; - if (verificationDataJson.NodeRejectStep != null) - { - _nodeId = verificationDataJson.NodeRejectStep.Value; - } - NodeReject(processId, _nodeId, verificationDataJson.VerificationOpinion.Value); - } - else if (verificationDataJson.VerificationFinally.Value == "2")//表示不同意 - { - NodeVerification(processId, false, verificationDataJson.VerificationOpinion.Value); - } - else if (verificationDataJson.VerificationFinally.Value == "1")//表示同意 - { - NodeVerification(processId, true, verificationDataJson.VerificationOpinion.Value); - } - } - catch - { - throw; - } - } - } -} - diff --git a/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowLaunchController.cs b/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowLaunchController.cs index 19e37078..a2ee0080 100644 --- a/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowLaunchController.cs +++ b/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowLaunchController.cs @@ -13,11 +13,11 @@ namespace OpenAuth.Mvc.Areas.FlowManage.Controllers /// public class FlowLaunchController : Controller { - private WFRuntimeService wfProcessBll; + private WFProcessInstanceService wfProcessBll; public FlowLaunchController() { - wfProcessBll = AutofacExt.GetFromFac(); + wfProcessBll = AutofacExt.GetFromFac(); } #region 视图功能 // diff --git a/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowProcessController.cs b/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowProcessController.cs index 3d8dae5a..012004d5 100644 --- a/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowProcessController.cs +++ b/OpenAuth.Mvc/Areas/FlowManage/Controllers/FlowProcessController.cs @@ -8,9 +8,9 @@ namespace OpenAuth.Mvc.Areas.FlowManage.Controllers public class FlowProcessController :Controller { - private WFRuntimeService wfProcessBll ; + private WFProcessInstanceService wfProcessBll ; - public FlowProcessController(WFRuntimeService service) + public FlowProcessController(WFProcessInstanceService service) { wfProcessBll = service; } diff --git a/OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js b/OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js index eb7fba9c..3bd7babd 100644 --- a/OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js +++ b/OpenAuth.Mvc/Content/scripts/utils/learun-applayout.js @@ -1485,7 +1485,7 @@ $.fn.frmGetData = function () { } //设置表单数据 $.fn.frmSetData = function (data) { - //console.log("data:"+JSON.stringify(data)); + console.log("设置表单:"+JSON.stringify(data)); var $id = $(this) for (var key in data) { var id = $id.find('#frm_' + key); @@ -1516,6 +1516,8 @@ $.fn.frmSetData = function (data) { else { $(this).find('input').each(function (r) { var checkid = $(this).attr('id'); + if (!checkid) return true; + var checkfiledid = checkid.replace('frm_', ''); var checktype = $(this).attr('type'); var checkValue = $(this).val(); diff --git a/OpenAuth.UnitTest/TestWorkflow.cs b/OpenAuth.UnitTest/TestWorkflow.cs index ccadd977..e9400a64 100644 --- a/OpenAuth.UnitTest/TestWorkflow.cs +++ b/OpenAuth.UnitTest/TestWorkflow.cs @@ -3,7 +3,6 @@ using Infrastructure; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenAuth.App; using OpenAuth.Domain; -using OpenAuth.Domain.Service; namespace OpenAuth.UnitTest { @@ -11,12 +10,12 @@ namespace OpenAuth.UnitTest public class TestWorkflow :TestBase { private WFSchemeService _app; - private WFRuntimeService _runApp; + private WFProcessInstanceService _runApp; public TestWorkflow() { _app = AutofacExt.GetFromFac(); - _runApp = AutofacExt.GetFromFac(); + _runApp = AutofacExt.GetFromFac(); } [TestMethod] public void AddForm()