using LeaRun.Application.Code; using LeaRun.Application.Entity.FlowManage; using LeaRun.Application.IService.FlowManage; using LeaRun.Application.Service.FlowManage; using LeaRun.Util; using LeaRun.Util.WebControl; using System; using System.Data; namespace LeaRun.Application.Busines.FlowManage { /// /// 版 本 6.1 /// Copyright (c) 2013-2016 上海力软信息技术有限公司 /// 创建人:陈彬彬 /// 日 期:2016.03.19 13:57 /// 描 述:工作流实例操作(支持:SqlServer) /// public class WFRuntimeBLL { private WFProcessInstanceIService wfProcessInstanceService = new WFProcessInstanceService(); private WFProcessSchemeIService wfProcessSchemeService = new WFProcessSchemeService(); private WFRuntimeIService wfRuntimeService = new WFRuntimeService(); #region 获取数据 /// /// 获取流程实例分页数据 /// /// 分页参数 /// 查询条件 /// public DataTable GetPageList(Pagination pagination, string queryJson) { return wfProcessInstanceService.GetPageList(pagination, queryJson); } /// /// 获取流程实例分页数据 /// /// 分页参数 /// 查询条件 /// 3草稿 /// public DataTable GetPageList(Pagination pagination, string queryJson, string type) { return wfProcessInstanceService.GetPageList(pagination, queryJson, type); } /// /// 获取登录者需要处理的流程 /// /// /// /// public DataTable GetToMeBeforePageList(Pagination pagination, string queryJson) { return wfProcessInstanceService.GetToMeBeforePageList(pagination, queryJson); } /// /// 获取登录者已经处理的流程 /// /// /// /// public DataTable GetToMeAfterPageList(Pagination pagination, string queryJson) { return wfProcessInstanceService.GetToMeAfterPageList(pagination, queryJson); } /// /// 获取实例进程模板的实体 /// /// /// public WFProcessSchemeEntity GetProcessSchemeEntity(string keyValue) { return wfProcessSchemeService.GetEntity(keyValue); } /// /// 已办流程进度查看,根据当前访问人的权限查看表单内容 /// /// /// public WFProcessSchemeEntity GetProcessSchemeEntityByUserId(string keyValue) { try { WFProcessSchemeEntity entity = wfProcessSchemeService.GetEntity(keyValue); entity.SchemeContent = wfRuntimeService.GetProcessSchemeContentByUserId(entity.SchemeContent, OperatorProvider.Provider.Current().UserId); return entity; } catch { throw; } } /// /// 已办流程进度查看,根据当前节点的权限查看表单内容 /// /// /// /// public WFProcessSchemeEntity GetProcessSchemeEntityByNodeId(string keyValue, string nodeId) { try { WFProcessSchemeEntity entity = wfProcessSchemeService.GetEntity(keyValue); entity.SchemeContent = wfRuntimeService.GetProcessSchemeContentByNodeId(entity.SchemeContent, nodeId); return entity; } catch { throw; } } /// /// 获取实例进程信息的实体 /// /// /// public WFProcessInstanceEntity GetProcessInstanceEntity(string keyValue) { return wfProcessInstanceService.GetEntity(keyValue); } #endregion #region 提交数据 /// /// 创建实例 /// /// 流程模板表Id /// 表单数据 /// 1正常,3草稿 /// public int CreateProcess(string wfSchemeInfoId, WFProcessInstanceEntity wfProcessInstanceEntity, string frmData) { try { if (wfProcessInstanceEntity.EnabledMark == 1)//发起流程 { wfRuntimeService.CreateInstance(Guid.NewGuid(), wfSchemeInfoId, wfProcessInstanceEntity, frmData); } else if (wfProcessInstanceEntity.EnabledMark == 3)//草稿 { wfRuntimeService.CreateRoughdraft(Guid.NewGuid(), wfSchemeInfoId, wfProcessInstanceEntity, frmData); } return 1; } catch { throw; } } /// /// 编辑草稿实例 /// /// 实例信息Id(主键) /// 表单数据 /// public int EditionRoughdraftProcess(string keyVlaue, WFProcessInstanceEntity wfProcessInstanceEntity, string frmData) { try { wfProcessInstanceEntity.Id = keyVlaue; if (wfProcessInstanceEntity.EnabledMark == 1) { wfRuntimeService.CreateInstance(wfProcessInstanceEntity, frmData); } else if (wfProcessInstanceEntity.EnabledMark == 3)//继续保存为草稿 { wfRuntimeService.EditionRoughdraft(wfProcessInstanceEntity, frmData); } return 1; } catch { throw; } } /// /// 审核流程 /// /// 审核的流程Id /// 审核内容 /// public void VerificationProcess(string processId, string verificationData) { try { dynamic verificationDataJson = verificationData.ToJson(); //驳回 if (verificationDataJson.VerificationFinally.Value == "3") { string _nodeId = ""; if (verificationDataJson.NodeRejectStep != null) { _nodeId = verificationDataJson.NodeRejectStep.Value; } wfRuntimeService.NodeReject(processId, _nodeId, verificationDataJson.VerificationOpinion.Value); } else if (verificationDataJson.VerificationFinally.Value == "2")//表示不同意 { wfRuntimeService.NodeVerification(processId,false, verificationDataJson.VerificationOpinion.Value); } else if (verificationDataJson.VerificationFinally.Value == "1")//表示同意 { wfRuntimeService.NodeVerification(processId,true, verificationDataJson.VerificationOpinion.Value); } } catch { throw; } } /// /// 流程指派 /// /// /// public void DesignateProcess(string processId, string makeLists) { wfProcessInstanceService.DesignateProcess(processId, makeLists); } /// /// 删除工作流实例进程 /// /// 主键 /// public int DeleteProcess(string keyValue) { return wfProcessInstanceService.DeleteProcess(keyValue); } /// /// 虚拟操作实例 /// /// /// 0暂停,1启用,2取消(召回) /// public int OperateVirtualProcess(string keyValue,int state) { return wfProcessInstanceService.OperateVirtualProcess(keyValue, state); } #endregion } }