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());
            }
        }
Пример #3
0
        /// <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());
            }
        }
Пример #5
0
        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());
            }
        }