private static void FillAssignees(WfProcessCurrentInfoCollection result) { InSqlClauseBuilder inBuilder = new InSqlClauseBuilder(); result.ForEach(currentInfo => inBuilder.AppendItem(currentInfo.CurrentActivityID)); if (inBuilder.Count > 0) { string sql = string.Format("SELECT * FROM WF.PROCESS_CURRENT_ASSIGNEES WHERE ACTIVITY_ID {0} ORDER BY ID", inBuilder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; DataView assigneeView = new DataView(table); assigneeView.Sort = "ACTIVITY_ID"; foreach (var currentInfo in result) { DataRowView[] rows = assigneeView.FindRows(currentInfo.CurrentActivityID); Array.ForEach(rows, drv => { currentInfo.Assignees.Add(DataRowToAssignee(drv.Row)); }); } } }
/// <summary> /// 删除流程运行时活动节点的Assignees /// </summary> /// <param name="activityID"></param> public void DeleteProcessCurrentAssignees(WfProcessCurrentInfoCollection processesInfo) { InSqlClauseBuilder builder = new InSqlClauseBuilder("ACTIVITY_ID"); processesInfo.ForEach(p => builder.AppendItem(p.CurrentActivityID)); if (builder.Count > 0) { string sql = string.Format("DELETE WF.PROCESS_CURRENT_ASSIGNEES WHERE {0}", builder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); DbHelper.RunSql(sql, GetConnectionName()); } }
/// <summary> /// 删除流程运行时活动节点的Assignees /// </summary> /// <param name="activityID"></param> public void Delete(WfProcessCurrentInfoCollection processesInfo) { InSqlClauseBuilder builder = new InSqlClauseBuilder("PROCESS_ID"); processesInfo.ForEach(p => builder.AppendItem(p.CurrentActivityID)); if (builder.Count > 0) { string sql = string.Format("DELETE {0} WHERE {1}", GetMappingInfo(new Dictionary <string, object>()).TableName, builder.AppendTenantCodeSqlClause().ToSqlString(TSqlBuilder.Instance)); DbHelper.RunSql(sql, GetConnectionName()); } }
/// <summary> /// 删除流程已活动过的所有的节点 /// </summary> /// <param name="process"></param> public void DeleteProcessActivities(WfProcessCurrentInfoCollection processes) { processes.NullCheck("processes"); InSqlClauseBuilder builder = new InSqlClauseBuilder("PROCESS_ID"); processes.ForEach(p => builder.AppendItem(p.InstanceID)); if (builder.Count > 0) { string sql = string.Format("DELETE WF.PROCESS_CURRENT_ACTIVITIES WHERE PROCESS_ID {0}", builder.AppendTenantCodeSqlClause(typeof(WfProcessCurrentActivity)).ToSqlString(TSqlBuilder.Instance)); DbHelper.RunSql(sql, GetConnectionName()); } }
public void DeletePersistQueue(WfProcessCurrentInfoCollection processesInfo) { processesInfo.NullCheck("processesInfo"); InSqlClauseBuilder builder = new InSqlClauseBuilder("PROCESS_ID"); processesInfo.ForEach(pi => builder.AppendItem(pi.InstanceID)); if (builder.IsEmpty == false) { ORMappingItemCollection mappingInfo = ORMapping.GetMappingInfo(typeof(WfPersistQueue)); string sql = string.Format("DELETE {0} WHERE {0}", mappingInfo.TableName, builder.ToSqlStringWithInOperator(TSqlBuilder.Instance)); DbHelper.RunSql(sql, GetConnectionName()); } }