/// <summary> /// 判断流程实例是否存在 /// </summary> /// <param name="processGUID">流程定义ID</param> /// <param name="version">流程定义版本</param> /// <returns>流程实例记录数</returns> public Int32 GetProcessInstanceCount(string processGUID, string version) { IDbConnection conn = SessionFactory.CreateConnection(); try { var pim = new ProcessInstanceManager(); return(pim.GetProcessInstanceCount(conn, processGUID, version)); } catch { throw; } finally { conn.Close(); } }
/// <summary> /// 废弃单据下所有流程的信息 /// </summary> /// <param name="runner">运行者</param> /// <returns>设置成功标识</returns> internal bool Discard(WfAppRunner runner) { var isDiscarded = false; IDbConnection conn = SessionFactory.CreateConnection(); var transaction = conn.BeginTransaction(); try { //process state:7--discard status //record status:1 --invalid status string updSql = @"UPDATE WfProcessInstance SET [ProcessState] = 7, [RecordStatusInvalid] = 1, [LastUpdatedDateTime] = @currentDate, [LastUpdatedByUserID] = @userID, [LastUpdatedByUserName] = @userName WHERE AppInstanceID = @appInstanceID AND ProcessGUID = @processGUID AND Version = @version"; int result = Repository.Execute(conn, updSql, new{ appInstanceID = runner.AppInstanceID, processGUID = runner.ProcessGUID, version = runner.Version, userID = runner.UserID, userName = runner.UserName, currentDate = System.DateTime.Now }, transaction); transaction.Commit(); } catch (System.Exception e) { transaction.Rollback(); throw new WorkflowException(LocalizeHelper.GetEngineMessage("processinstancemanager.discard.error", e.Message)); } finally { conn.Close(); } return(isDiscarded); }
/// <summary> /// 获取运行中的流程实例 /// </summary> /// <param name="runner">运行者</param> /// <returns>流程实例实体</returns> public ProcessInstanceEntity GetRunningProcessInstance(WfAppRunner runner) { ProcessInstanceEntity entity = null; IDbConnection conn = SessionFactory.CreateConnection(); try { var pim = new ProcessInstanceManager(); entity = pim.GetRunningProcessInstance(conn, runner.AppInstanceID, runner.ProcessGUID); } catch { throw; } finally { conn.Close(); } return(entity); }
public ResponseResult StartProcess(WfAppRunner starter) { IWorkflowService wfService = new WorkflowService(); IDbConnection conn = SessionFactory.CreateConnection(); IDbTransaction trans = null; try { trans = conn.BeginTransaction(); WfExecutedResult result = wfService.StartProcess(conn, starter, trans); trans.Commit(); int newProcessInstanceID = result.ProcessInstanceIDStarted; IList <NodeView> nextStpes = wfService.GetNextActivityTree(starter); if (result.Status == WfExecutedStatus.Success) { trans.Commit(); return(ResponseResult.Success()); } else { trans.Rollback(); return(ResponseResult.Error(result.Message)); } } catch (WorkflowException w) { trans.Rollback(); return(ResponseResult.Error(w.Message)); } finally { trans.Dispose(); if (conn.State == ConnectionState.Open) { conn.Close(); } } }
/// <summary> /// 数据测试 /// </summary> /// <param name="entity"></param> /// <returns></returns> public Entity.ResponseResult Add(Entity.GenresEntity entity) { var appResult = ResponseResult.Default(); try { using (IDbConnection conn = SessionFactory.CreateConnection()) { int rows = conn.Insert <GenresEntity>(entity); if (rows > 0) { appResult = ResponseResult.Success(); } } } catch (Exception ex) { appResult = ResponseResult.Error(ex.Message); } return(appResult); }
/// <summary> /// 获取特定表单的实例数据 /// </summary> /// <param name="query">实体查询对象</param> /// <returns>表单数值列表</returns> public List <dynamic> GetEntityInfoWithAttrValueList(EntityInfoQuery query) { List <dynamic> list = null; try { var param = new DynamicParameters(); param.Add("@queryType", 1); param.Add("@entityDefID", query.EntityDefID); using (var conn = SessionFactory.CreateConnection()) { list = QuickRepository.ExecProcQuery <dynamic>(conn, "pr_eav_EntityAttrValuePivotGet", param).ToList <dynamic>(); } return(list); } catch (System.Exception ex) { throw; } }
/// <summary> /// 流程的取消操作 /// </summary> /// <returns>是否成功</returns> internal bool Cancel(WfAppRunner runner, IDbConnection conn = null) { bool isCanceled = false; if (conn == null) { conn = SessionFactory.CreateConnection(); } try { var entity = GetProcessInstanceLatest(runner.AppName, runner.AppInstanceID, runner.ProcessGUID); if (entity == null || entity.ProcessState != (short)ProcessStateEnum.Running) { throw new WorkflowException("无法取消流程,错误原因:当前没有运行中的流程实例,或者同时有多个运行中的流程实例(不合法数据)!"); } IDbSession session = SessionFactory.CreateSession(); entity.ProcessState = (short)ProcessStateEnum.Canceled; entity.RecordStatusInvalid = 1; entity.LastUpdatedByUserID = runner.UserID; entity.LastUpdatedByUserName = runner.UserName; entity.LastUpdatedDateTime = System.DateTime.Now; Update(entity, session); isCanceled = true; } catch (System.Exception e) { throw new WorkflowException(string.Format("取消流程实例失败,错误原因:{0}", e.Message)); } finally { conn.Close(); } return(isCanceled); }
/// <summary> /// 获取流程正常实例数据 /// </summary> /// <param name="runner"></param> /// <returns></returns> public ProcessInstanceEntity GetProcessInstance(WfAppRunner runner, IDbConnection conn = null) { if (conn == null) { conn = SessionFactory.CreateConnection(); } try { var pim = new ProcessInstanceManager(); var processInstance = pim.GetProcessInstanceLatest(runner.AppInstanceID, runner.ProcessGUID); return(processInstance); } catch { throw; } finally { conn.Close(); } }
/// <summary> /// (通用)生成单据编号。统一格式:前缀+年月日+4位字符,示例 YT2017070001 /// </summary> /// <param name="tableName">表名</param> /// <param name="columnName">列名</param> /// <param name="prefix">前缀</param> /// <returns>返回单据编号</returns> public string GetMonthBatchCode(string tableName, string columnName, string prefix) { string batchCode = string.Empty; using (IDbConnection conn = SessionFactory.CreateConnection()) { try { string sql = string.Format("EXEC UP_GetMonthBatchCode '{0}', '{1}', '{2}'", tableName, columnName, prefix); object obj = QuickRepository.ExecuteScalar(conn, sql); if (obj != null) { batchCode = obj.ToString(); } } catch (Exception ex) { } } return(batchCode); }
/// <summary> /// 流程的取消操作 /// </summary> /// <param name="runner">运行者</param> /// <param name="conn">数据库链接</param> /// <returns>设置成功标识</returns> internal bool Cancel(WfAppRunner runner, IDbConnection conn = null) { bool isCanceled = false; if (conn == null) { conn = SessionFactory.CreateConnection(); } try { var entity = GetProcessInstanceLatest(runner.AppInstanceID, runner.ProcessGUID); if (entity == null || entity.ProcessState != (short)ProcessStateEnum.Running) { throw new WorkflowException(LocalizeHelper.GetEngineMessage("processinstancemanager.cancel.error")); } IDbSession session = SessionFactory.CreateSession(); entity.ProcessState = (short)ProcessStateEnum.Canceled; entity.RecordStatusInvalid = 1; entity.LastUpdatedByUserID = runner.UserID; entity.LastUpdatedByUserName = runner.UserName; entity.LastUpdatedDateTime = System.DateTime.Now; Update(entity, session); isCanceled = true; } catch (System.Exception e) { throw new WorkflowException(LocalizeHelper.GetEngineMessage("processinstancemanager.cancel.error", e.Message)); } finally { conn.Close(); } return(isCanceled); }
/// <summary> /// 根据表单实例ID,读取表单字段数值 /// </summary> /// <param name="entityInfoID"></param> /// <returns></returns> public List <EntityAttrValueItem> QueryEntityAttrValue(int entityInfoID) { List <EntityAttrValueItem> list = null; try { var param = new DynamicParameters(); param.Add("@entityInfoID", entityInfoID); using (var conn = SessionFactory.CreateConnection()) { list = QuickRepository.ExecProcQuery <EntityAttrValueItem>(conn, "pr_eav_EntityAttrValueQuery", param).ToList <EntityAttrValueItem>(); } return(list); } catch (System.Exception ex) { throw; } }
public ResponseResult RunProcessApp(WfAppRunner runner) { IWorkflowService wfService = new WorkflowService(); IDbConnection conn = SessionFactory.CreateConnection(); IDbTransaction trans = null; try { trans = conn.BeginTransaction(); var result = wfService.RunProcessApp(conn, runner, trans); trans.Commit(); if (result.Status == WfExecutedStatus.Success) { trans.Commit(); return(ResponseResult.Success()); } else { trans.Rollback(); return(ResponseResult.Error(result.Message)); } } catch (WorkflowException w) { trans.Rollback(); return(ResponseResult.Error(w.Message)); } finally { trans.Dispose(); if (conn.State == ConnectionState.Open) { conn.Close(); } } }
/// <summary> /// 获取活动节点实例 /// </summary> /// <param name="appInstanceID"></param> /// <param name="processGUID"></param> /// <param name="activityGUID"></param> /// <returns></returns> internal ActivityInstanceEntity GetActivityInstanceLatest(string appInstanceID, string processGUID, string activityGUID) { var sql = @"SELECT * FROM WfActivityInstance WHERE AppInstanceID = @appInstanceID AND ProcessGUID = @processGUID AND ActivityGUID = @activityGUID ORDER BY ID DESC"; ActivityInstanceEntity activityInstance = null; var conn = SessionFactory.CreateConnection(); try { var instanceList = Repository.Query <ActivityInstanceEntity>(conn, sql, new { appInstanceID = appInstanceID, processGUID = processGUID.ToString(), activityGUID = activityGUID.ToString() }).ToList(); if (instanceList.Count > 0) { activityInstance = instanceList[0]; } } finally { if (conn != null) { conn.Close(); } } return(activityInstance); }
public ResponseResult <List <AppFlowEntity> > QueryPaged(AppFlowQuery query) { var result = ResponseResult <List <AppFlowEntity> > .Default(); var conn = SessionFactory.CreateConnection(); try { var count = 0; var list = AppFlowService.GetPaged(query, out count); result = ResponseResult <List <AppFlowEntity> > .Success(list); result.TotalRowsCount = count; result.TotalPages = (count + query.PageSize - 1) / query.PageSize; } catch (System.Exception ex) { result = ResponseResult <List <AppFlowEntity> > .Error( string.Format("获取{0}分页数据失败,错误{1}", "AppFlow", ex.Message) ); } return(result); }
public bool UpdateHrsLeave(LeaveEntity leave) { //IDbSession conn = SessionFactory.CreateSession(); IDbConnection conn = SessionFactory.CreateConnection(); string sql = @"UPDATE [dbo].[HrsLeave] SET [DepManagerRemark] = @DepManagerRemark, [DirectorRemark] = @DirectorRemark, [DeputyGeneralRemark] = @DeputyGeneralRemark, [GeneralManagerRemark] =@GeneralManagerRemark WHERE id=@Id"; try { string s = Repository.Execute(conn, sql, new { DepManagerRemark = leave.DepManagerRemark, DirectorRemark = leave.DirectorRemark, DeputyGeneralRemark = leave.DeputyGeneralRemark, GeneralManagerRemark = leave.GeneralManagerRemark, Id = leave.ID }).ToString(); if (string.IsNullOrEmpty(s)) { return(false); } else { return(true); } } finally { conn.Close(); } }
public ProcessEntity GetById(Guid processGUID) { IDbConnection conn = SessionFactory.CreateConnection(); return(ProcessRepository.GetById <ProcessEntity>(processGUID, conn, null)); }