/// <summary> /// 保存流程变量 /// </summary> /// <param name="entity">流程实体</param> /// <returns>流程变量ID</returns> public int SaveProcessVariable(ProcessVariableEntity entity) { var pvm = new ProcessVariableManager(); var entityID = pvm.SaveVariable(entity); return(entityID); }
/// <summary> /// 设置变量 /// </summary> /// <param name="conn">链接</param> /// <param name="entity">流程变量实体</param> /// <param name="trans">事务</param> /// <returns>实体ID</returns> internal int SaveVariable(IDbConnection conn, ProcessVariableEntity entity, IDbTransaction trans) { if (string.IsNullOrEmpty(entity.AppInstanceID) || entity.ProcessInstanceID == 0) { throw new WorkflowException(LocalizeHelper.GetEngineMessage("processvariablemanager.savevariable.error")); } int entityID = 0; var query = new ProcessVariableQuery { VariableType = EnumHelper.ParseEnum <ProcessVariableTypeEnum>(entity.VariableType.ToString()), ProcessInstanceID = entity.ProcessInstanceID, ActivityGUID = entity.ActivityGUID, Name = entity.Name }; var item = Query(conn, query, trans); if (item == null) { entityID = Insert(conn, entity, trans); } else { entityID = item.ID; Update(conn, entity, trans); } return(entityID); }
/// <summary> /// 活动变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="processInstanceID">流程实例ID</param> /// <param name="activityGUID">活动GUID</param> /// <param name="name">变量名称</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity GetVariableOfActivity(IDbConnection conn, int processInstanceID, string activityGUID, string name, IDbTransaction trans) { ProcessVariableEntity entity = null; var sql = @"SELECT * FROM WfProcessVariable WHERE VariableType=@variableType AND ProcessInstanceID=@processInstanceID AND ActivityGUID=@activityGUID AND Name=@name ORDER BY ActivityGUID"; var list = Repository.Query <ProcessVariableEntity>(sql, new { variableType = ProcessVariableTypeEnum.Process.ToString(), processInstanceID = processInstanceID, activityGUID = activityGUID, name = name }).ToList(); if (list != null && list.Count() > 0) { entity = list[0]; } return(entity); }
/// <summary> /// 流程变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="processInstanceID">流程实例ID</param> /// <param name="name">变量名称</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity GetVariable(IDbConnection conn, int processInstanceID, string name, IDbTransaction trans) { ProcessVariableEntity entity = null; string sql = @"SELECT * FROM WfProcessVariable WHERE VariableType=@variableType AND ProcessInstanceID=@newProcessInstanceID AND Name=@newName ORDER BY ID DESC"; var list = Repository.Query <ProcessVariableEntity>(conn, sql, new { variableType = ProcessVariableTypeEnum.Process.ToString(), newProcessInstanceID = processInstanceID, newName = name }, trans ).ToList(); if (list.Count() > 0) { entity = list[0]; } return(entity); }
/// <summary> /// 流程变量数据插入 /// </summary> /// <param name="conn">链接</param> /// <param name="entity">流程变量实体</param> /// <param name="trans">事务</param> /// <returns>新实例ID</returns> private Int32 Insert(IDbConnection conn, ProcessVariableEntity entity, IDbTransaction trans) { int newID = Repository.Insert(conn, entity, trans); entity.ID = newID; return(newID); }
/// <summary> /// 设置变量 /// </summary> /// <param name="entity">流程变量实体</param> /// <returns>实体ID</returns> internal int SaveVariable(ProcessVariableEntity entity) { var entityID = 0; using (var session = SessionFactory.CreateSession()) { entityID = SaveVariable(session.Connection, entity, session.Transaction); } return(entityID); }
/// <summary> /// 流程变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="processInstanceID">流程实例ID</param> /// <param name="name">变量名称</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity GetVariableOfProcess(IDbConnection conn, int processInstanceID, string name, IDbTransaction trans) { ProcessVariableEntity entity = null; var sqlQuery = (from pv in Repository.GetAll <ProcessVariableEntity>() where pv.VariableType == ProcessVariableTypeEnum.Process.ToString() && pv.ProcessInstanceID == processInstanceID && pv.Name == name select pv ); var list = sqlQuery.OrderByDescending(pv => pv.ID).ToList <ProcessVariableEntity>(); if (list != null && list.Count() > 0) { entity = list[0]; } return(entity); }
/// <summary> /// 流程变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="query">查询对象</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity Query(IDbConnection conn, ProcessVariableQuery query, IDbTransaction trans) { ProcessVariableEntity entity = null; string sql = string.Empty; if (query.VariableType == ProcessVariableTypeEnum.Process) { entity = GetVariable(conn, query.ProcessInstanceID, query.Name, trans); } else if (query.VariableType == ProcessVariableTypeEnum.Activity) { if (string.IsNullOrEmpty(query.ActivityGUID)) { throw new WorkflowException(LocalizeHelper.GetEngineMessage("processvariablemanager.query.error")); } entity = GetVariable(conn, query.ProcessInstanceID, query.ActivityGUID, query.Name, trans); } return(entity); }
/// <summary> /// 流程变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="processInstanceID">流程实例ID</param> /// <param name="activityGUID">活动GUID</param> /// <param name="name">变量名称</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity GetVariable(IDbConnection conn, int processInstanceID, string activityGUID, string name, IDbTransaction trans) { ProcessVariableEntity entity = null; string sql = @"SELECT * FROM WfProcessVariable WHERE VariableType=@variableType AND ProcessInstanceID=@newProcessInstanceID AND Name=@newName "; StringBuilder sqlB = new StringBuilder(1024); sqlB.Append(sql); DynamicParameters parameters = new DynamicParameters(); parameters.Add("@variableType", ProcessVariableTypeEnum.Activity.ToString()); parameters.Add("@newProcessInstanceID", processInstanceID); parameters.Add("@newName", name); if (!string.IsNullOrEmpty(activityGUID)) { sqlB.Append(" AND ActivityGUID = @newActivityGUID "); parameters.Add("@newActivityGUID", activityGUID); } sqlB.Append(" ORDER BY ID DESC "); var list = Repository.Query <ProcessVariableEntity>(conn, sqlB.ToString(), parameters, trans ).ToList(); if (list != null && list.Count() > 0) { entity = list[0]; } return(entity); }
/// <summary> /// 流程变量查询 /// </summary> /// <param name="conn">链接</param> /// <param name="processInstanceID">流程实例ID</param> /// <param name="name">变量名称</param> /// <param name="trans">事务</param> /// <returns>流程变量实体</returns> private ProcessVariableEntity GetVariable(IDbConnection conn, int processInstanceID, string name, IDbTransaction trans) { ProcessVariableEntity entity = null; //string sql = @"SELECT * FROM WfProcessVariable // WHERE VariableType=@variableType // AND ProcessInstanceID=@newProcessInstanceID // AND Name=@newName // ORDER BY ID DESC"; //var list = Repository.Query<ProcessVariableEntity>(conn, sql, // new // { // variableType = ProcessVariableTypeEnum.Process.ToString(), // newProcessInstanceID = processInstanceID, // newName = name // }, // trans // ).ToList(); var sqlQuery = (from pv in Repository.GetAll <ProcessVariableEntity>(conn, trans) where pv.VariableType == ProcessVariableTypeEnum.Process.ToString() && pv.ProcessInstanceID == processInstanceID && pv.Name == name select pv ); var list = sqlQuery.OrderByDescending(pv => pv.ID).ToList <ProcessVariableEntity>(); if (list.Count() > 0) { entity = list[0]; } return(entity); }
/// <summary> /// 设置变量 /// </summary> /// <param name="name">名称</param> /// <param name="value">数值</param> /// <param name="variableType">变量类型</param> public void SaveVariable(ProcessVariableTypeEnum variableType, string name, string value) { var pvm = new ProcessVariableManager(); ProcessVariableEntity entity = null; if (variableType == ProcessVariableTypeEnum.Process) { //设置流程变量 entity = new ProcessVariableEntity { VariableType = ProcessVariableTypeEnum.Process.ToString(), AppInstanceID = this.AppInstanceID, ProcessGUID = this.ProcessGUID, ProcessInstanceID = this.ProcessInstanceID, Name = name, Value = value, LastUpdatedDateTime = System.DateTime.Now }; } else if (variableType == ProcessVariableTypeEnum.Activity) { entity = new ProcessVariableEntity { VariableType = ProcessVariableTypeEnum.Activity.ToString(), AppInstanceID = this.AppInstanceID, ProcessGUID = this.ProcessGUID, ProcessInstanceID = this.ProcessInstanceID, ActivityGUID = this.ActivityGUID, ActivityName = this.ActivityName, Name = name, Value = value, LastUpdatedDateTime = System.DateTime.Now }; } pvm.SaveVariable(Session.Connection, entity, Session.Transaction); }
/// <summary> /// 流程实例更新 /// </summary> /// <param name="conn">链接</param> /// <param name="entity">流程变量实体</param> /// <param name="trans">事务</param> /// <returns>新实例ID</returns> private void Update(IDbConnection conn, ProcessVariableEntity entity, IDbTransaction trans) { Repository.Update(conn, entity, trans); }