public WfClientProcessCurrentInfoPageQueryResult QueryProcesses(WfClientProcessQueryCondition condition, int startRowIndex, int maximumRows, string orderBy, int totalCount) { condition.NullCheck("condition"); OperationContext.Current.FillContextToOguServiceContext(); WfProcessQueryCondition serverCondition = null; WfClientProcessQueryConditionConverter.Instance.ClientToServer(condition, ref serverCondition); if (orderBy.IsNullOrEmpty()) { orderBy = "START_TIME DESC"; } ConnectiveSqlClauseCollection connective = serverCondition.ToSqlBuilder(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("COMMITTED", "1"); builder.AppendTenantCode(); connective.Add(builder); QueryCondition qc = new QueryCondition(startRowIndex, maximumRows, ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(), ORMapping.GetMappingInfo(typeof(WfProcessCurrentInfo)).TableName, orderBy); qc.WhereClause += connective.ToSqlString(TSqlBuilder.Instance); return(QueryProcessInfo(qc, totalCount)); }
/// <summary> /// /// </summary> /// <param name="fillAssignees"></param> /// <param name="action"></param> /// <returns></returns> public WfProcessCurrentInfoCollection Load(bool fillAssignees, Action <WhereSqlClauseBuilder> action) { action.NullCheck("action"); WfProcessCurrentInfoCollection result = new WfProcessCurrentInfoCollection(); WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); action(whereBuilder); string fieldNames = ORMapping.GetSelectFieldsNameSql <WfProcessInstanceData>("Data"); string sql = string.Format("SELECT {0} FROM WF.PROCESS_INSTANCES WHERE {1}", fieldNames, whereBuilder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; result.LoadFromDataView(table.DefaultView); if (fillAssignees) { FillAssignees(result); } return(result); }
/// <summary> /// 加载流程运行时的信息 /// </summary> /// <param name="processIDs"></param> /// <returns></returns> public WfProcessCurrentInfoCollection Load(bool fillAssignees, params string[] processIDs) { processIDs.NullCheck("processIDs"); WfProcessCurrentInfoCollection result = new WfProcessCurrentInfoCollection(); InSqlClauseBuilder builder = new InSqlClauseBuilder(); builder.AppendItem(processIDs); if (builder.Count > 0) { string fieldNames = ORMapping.GetSelectFieldsNameSql <WfProcessInstanceData>("Data"); string sql = string.Format("SELECT {0} FROM WF.PROCESS_INSTANCES WHERE INSTANCE_ID {1}", fieldNames, builder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; result.LoadFromDataView(table.DefaultView); if (fillAssignees) { FillAssignees(result); } } return(result); }
public WfProcessDescriptorInfoCollection LoadWfProcessDescriptionInfos(Action <WhereSqlClauseBuilder> action, bool ignoreProcessData) { action.NullCheck("action"); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendTenantCode(); action(builder); string sqlFieldStr = ignoreProcessData ? ORMapping.GetSelectFieldsNameSql <WfProcessDescriptorInfo>("DATA") : "*"; string sql = string.Format("SELECT {0} FROM WF.PROCESS_DESCRIPTORS WHERE {1}", sqlFieldStr, builder.ToSqlString(TSqlBuilder.Instance)); WfProcessDescriptorInfoCollection result = new WfProcessDescriptorInfoCollection(); DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { WfProcessDescriptorInfo wfProcessDescInfo = new WfProcessDescriptorInfo(); ORMapping.DataRowToObject(row, wfProcessDescInfo); result.Add(wfProcessDescInfo); } return(result); }
protected override void OnBuildQueryCondition(QueryCondition qc) { qc.FromClause = "WF.PROCESS_INSTANCES (NOLOCK)"; if (qc.OrderByClause.IsNullOrEmpty()) { qc.OrderByClause = "CREATE_TIME DESC"; } qc.SelectFields = ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(); }
protected override void OnBuildQueryCondition(QueryCondition qc) { qc.FromClause = "WF.PROCESS_INSTANCES (NOLOCK)"; if (qc.OrderByClause.IsNullOrEmpty()) { qc.OrderByClause = "START_TIME DESC"; } qc.SelectFields = ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("COMMITTED", "1"); builder.AppendTenantCode(); if (qc.WhereClause.IsNotEmpty()) { qc.WhereClause += " AND "; } qc.WhereClause += builder.ToSqlString(TSqlBuilder.Instance); }
/// <summary> /// 加载分支流程信息 /// </summary> /// <param name="fillAssignees"></param> /// <param name="activityID"></param> /// <param name="templateKey"></param> /// <param name="includeAborted">是否包含已经作废的流程</param> /// <returns></returns> public WfProcessCurrentInfoCollection LoadByOwnerActivityID(bool fillAssignees, string activityID, string templateKey, bool includeAborted) { activityID.NullCheck("activityID"); WfProcessCurrentInfoCollection result = new WfProcessCurrentInfoCollection(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("OWNER_ACTIVITY_ID", activityID); if (templateKey.IsNotEmpty()) { builder.AppendItem("OWNER_TEMPLATE_KEY", templateKey); } if (includeAborted == false) { builder.AppendItem("Status", WfProcessStatus.Aborted.ToString(), "<>"); } string fieldNames = ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(); string sql = string.Format("SELECT {0} FROM WF.PROCESS_INSTANCES WHERE {1}", fieldNames, builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; result.LoadFromDataView(table.DefaultView); if (fillAssignees) { FillAssignees(result); } return(result); }
/// <summary> /// 得到某个活动下的分支流程统计信息 /// </summary> /// <param name="activityID">不可以为空</param> /// <param name="templateKey">可以为空,如果有值,则只统计某个模板的流程</param> /// <returns></returns> public Dictionary <WfProcessStatus, int> LoadStatisticsDataByOwnerActivityID(string activityID, string templateKey) { activityID.NullCheck("activityID"); Dictionary <WfProcessStatus, int> result = new Dictionary <WfProcessStatus, int>(); WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder(); builder.AppendItem("OWNER_ACTIVITY_ID", activityID); if (templateKey.IsNotEmpty()) { builder.AppendItem("OWNER_TEMPLATE_KEY", templateKey); } string fieldNames = ORMapping.GetSelectFieldsNameSql <WfProcessCurrentInfo>(); string sql = string.Format("SELECT STATUS, COUNT(*) AS COUNT FROM WF.PROCESS_INSTANCES WHERE {0} GROUP BY STATUS", builder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; foreach (DataRow row in table.Rows) { string statusText = row["STATUS"].ToString(); WfProcessStatus status; if (Enum.TryParse(statusText, true, out status)) { result[status] = (int)row["COUNT"]; } } return(result); }