/// <summary> /// 返回流程所有的已流转过的活动节点 /// </summary> /// <param name="processID"></param> /// <returns></returns> public WfProcessCurrentActivityCollection Load(string processID) { processID.CheckStringIsNullOrEmpty(processID); WfProcessCurrentActivityCollection result = new WfProcessCurrentActivityCollection(); WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("PROCESS_ID", processID); wBuilder.AppendTenantCodeSqlClause(typeof(WfProcessCurrentActivity)); string sql = string.Format("SELECT * FROM WF.PROCESS_CURRENT_ACTIVITIES WHERE {0}", wBuilder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, GetConnectionName()).Tables[0]; result.LoadFromDataView(table.DefaultView); return result; }
public void Update(string processID, WfProcessCurrentActivityCollection pcas) { processID.CheckStringIsNullOrEmpty("processID"); pcas.NullCheck("pcas"); StringBuilder strB = new StringBuilder(); InSqlClauseBuilder deleteActivityIDs = new InSqlClauseBuilder("ACTIVITY_ID"); foreach (WfProcessCurrentActivity pca in pcas) { if (strB.Length > 0) strB.Append(TSqlBuilder.Instance.DBStatementSeperator); strB.Append(ORMapping.GetInsertSql(pca, TSqlBuilder.Instance)); deleteActivityIDs.AppendItem(pca.ActivityID); } WhereSqlClauseBuilder wBuilder = new WhereSqlClauseBuilder(); wBuilder.AppendItem("PROCESS_ID", processID); wBuilder.AppendTenantCodeSqlClause(typeof(WfProcessCurrentActivity)); string sqlDelete = string.Format("DELETE WF.PROCESS_CURRENT_ACTIVITIES WHERE {0}", wBuilder.ToSqlString(TSqlBuilder.Instance)); if (deleteActivityIDs.Count > 0) sqlDelete += string.Format(" AND {0}", deleteActivityIDs.ToSqlString(TSqlBuilder.Instance)); string sql = sqlDelete; if (strB.Length > 0) sql += TSqlBuilder.Instance.DBStatementSeperator + strB.ToString(); DbHelper.RunSqlWithTransaction(sql, GetConnectionName()); }
public void UpdateProcessActivities(IWfProcess process) { process.NullCheck("process"); WfProcessCurrentActivityCollection pcas = new WfProcessCurrentActivityCollection(); foreach (IWfActivity activity in process.Activities) pcas.Add(WfProcessCurrentActivity.FromActivity(activity)); Update(process.ID, pcas); }