Ejemplo n.º 1
0
 private void SetReceiveUserList(WF_WORKFLOW_INST workflowRow, IUnitOfData source)
 {
     try
     {
         QuoteIdList          list = new QuoteIdList();
         int                  count;
         IActor               actorPlug = AtawIocContext.Current.FetchInstance <IActor>(ActorRegName);
         IEnumerable <string> actors    = actorPlug.GetActors(workflowRow, source);
         list.Add(actors);
         workflowRow.WI_RECEIVE_LIST  = list.ToString(out count);
         workflowRow.WI_RECEIVE_COUNT = count;
         if (count == 0)
         {
             throw new NoActorException(this, Error, new Exception("找不到一个人"));
         }
     }
     catch (Exception ex)
     {
         throw new NoActorException(this, Error, ex);
     }
 }
Ejemplo n.º 2
0
        public void SetAllMainRow(IUnitOfData context, StepConfig stepConfig, object workflowId)
        {
            WorkflowDbContext wfContent = context as WorkflowDbContext;
            string            sql       = "UPDATE {0} SET  " +
                                          " {1}_WF_ID = @WF_ID ," +
                                          " {1}_IS_APPLY_WF = 1 ," +
                                          " {1}_WF_IS_END = 0 ,  " +
                                          " {1}_WF_STATUS = @WF_STATUS ,  " +
                                          " {1}_STEP_NAME = @STEP_NAME ,  " +
                                          " {1}_WF_TIME = @WF_TIME " +
                                          " WHERE FID = @FID";

            sql = string.Format(sql, MainTableName, Prefix);

            wfContent.RegisterSqlCommand(sql,
                                         new SqlParameter[] {
                new SqlParameter("@WF_ID", workflowId)
                {
                    DbType = DbType.String
                },
                new SqlParameter("@FID", FID)
                {
                    DbType = DbType.String
                },
                new SqlParameter("@WF_STATUS", stepConfig.DisplayName
                                 )
                {
                    DbType = DbType.String
                },
                new SqlParameter("@STEP_NAME", stepConfig.Name)
                {
                    DbType = DbType.String
                },
                new SqlParameter("@WF_TIME", wfContent.Now)
                {
                    DbType = DbType.DateTime
                }
            }
                                         );
        }
Ejemplo n.º 3
0
        public void SetMainRowCreateID(IUnitOfData context, string userID)
        {
            WorkflowDbContext wfContent = context as WorkflowDbContext;
            string            sql       = "UPDATE {0} SET  " +
                                          " CREATE_ID = @USERID" +
                                          " WHERE FID = @FID";

            sql = string.Format(sql, MainTableName);

            wfContent.RegisterSqlCommand(sql,
                                         new SqlParameter[] {
                new SqlParameter("@USERID", userID)
                {
                    DbType = DbType.String
                },
                new SqlParameter("@FID", FID)
                {
                    DbType = DbType.String
                }
            }
                                         );
        }
Ejemplo n.º 4
0
 private Workflow(string workflowId, IUnitOfData workflowSource)
     : this(workflowSource)
 {
     //Source = workflowSource;
     WorkflowDbContext dbContext = workflowSource as WorkflowDbContext;
     WF_WORKFLOW_INST  row       = dbContext.WF_WORKFLOW_INST.FirstOrDefault(a => a.WI_ID == workflowId);
     AtawDebug.AssertNotNull(row, "该流程已处理或异常,请进历史页面查看", this);
     WorkflowId  = row.WI_ID;
     WorkflowRow = row;
     Config      = WorkflowConfig.GetByName(row.WI_WD_NAME, workflowSource);
     //WorkflowConfig.ConnString =
     StepConfig stepConfig = Config.Steps[row.WI_CURRENT_STEP];
     if (stepConfig != null)
     {
         CurrentStep  = stepConfig.CreateStep(this);
         CurrentState = CurrentStep.GetState(row.WI_STATUS.Value <StepState>());
     }
     else
     {
         throw new AtawException("不存在的步骤" + row.WI_CURRENT_STEP, this);
     }
 }
Ejemplo n.º 5
0
        public Workflow(IUnitOfData source, string name, RegNameList <KeyValueItem> parameter, string createUser,
                        int?parentId)
            : this(source)
        {
            //  Source = source;
            WorkflowDbContext dbContext = source as WorkflowDbContext;
            Config      = WorkflowConfig.GetByName(name, source);
            WorkflowRow = new WF_WORKFLOW_INST();
            //WorkflowRow.BeginEdit();
            WorkflowRow.WI_ID = dbContext.GetUniId();
            //WorkflowRow["WI_ID"] = id;
            WorkflowId                 = WorkflowRow.WI_ID;
            WorkflowRow.WI_WD_NAME     = name;
            WorkflowRow.WI_CREATE_USER = createUser;
            // WorkflowRow["WI_RETRIEVABLE"] = Config.Retrievable;
            ////初始化参与人列表
            WorkflowRow.WI_REF_LIST    = QuoteIdList.GetQuoteId(createUser);
            WorkflowRow.WI_CREATE_DATE = dbContext.Now;

            BeginStep step = Config.Steps.BeginStep.CreateStep(this) as BeginStep;
            step.Parameter = parameter;
            CurrentStep    = step;
            CurrentState   = BeginNRState.Instance;
        }
Ejemplo n.º 6
0
        public void DoPush(IEnumerable <string> userIds, NodeRequest nodeRequest, DataAccess.WF_WORKFLOW_INST mainRow, IUnitOfData source)
        {
            //throw new NotImplementedException();
            if (userIds == null || userIds.Count() == 0)
            {
                return;
            }
            var workflowSource = source as WorkflowDbContext;

            if (workflowSource == null)
            {
                return;
            }
            var workflowDefName = workflowSource.WF_WORKFLOW_DEF.FirstOrDefault(m => m.WD_SHORT_NAME == mainRow.WI_WD_NAME).WD_NAME;

            foreach (var userId in userIds)
            {
                var              selectsql = string.Format("SELECT NickName FROM Ataw_Users WHERE UserID=@USERID");
                var              param     = new SqlParameter("@USERID", userId);
                string           nickName  = source.QueryObject(selectsql, param).ToString();
                SnsActiveService sns       = new SnsActiveService();
                sns.SetUnitOfData(source);
                string title = string.Format(ObjectUtil.SysCulture, "待处理流程到达:"
                                             + "<a class='ACT-A-HREF' href='$windefault$module/workflow/workflowDef$Detail${0}'>{1}</a>"
                                             + "<br/>"
                                             + "<a class='ACT-A-HREF' href='$winworkflow$inst$${2}'>{3}-{4}</a>", Convert.ToBase64String(Encoding.Default.GetBytes("{\"keys\":\"" + mainRow.WI_WD_NAME + "\"}")), workflowDefName, mainRow.WI_ID, mainRow.WI_NAME, mainRow.WI_CURRENT_STEP_NAME);
                sns.InsertActive(new ActiveModel()
                {
                    ItemType      = ActivityItemType.MyWork.ToString(),
                    PrivacyStatus = PrivacyType.ToMyself.ToString(),
                    SourceId      = mainRow.WI_ID,
                    SubContent    = title,
                    UserId        = userId,
                    UserName      = nickName
                });
            }

            source.ApplyFun.Add((tran) =>
            {
                NodeServerPusher.Notify(userIds, null);
                return(0);
            });
        }
Ejemplo n.º 7
0
 public void ManualCompletePush(string manualUserId, NodeRequest nodeRequest, DataAccess.WF_WORKFLOW_INST mainRow, IUnitOfData source)
 {
     // throw new NotImplementedException();
 }
Ejemplo n.º 8
0
 public abstract void UpdateWorkflowRow(IUnitOfData source);
Ejemplo n.º 9
0
 public void DoAction(string userId, DataAccess.WF_WORKFLOW_INST mainRow, WorkflowContent content, IUnitOfData source)
 {
     // throw new NotImplementedException();
 }
Ejemplo n.º 10
0
 public static void ErrorAbort(IUnitOfData source, WF_WORKFLOW_INST WorkflowRow)
 {
     Abort(source, WorkflowRow, FinishType.Error);
 }
Ejemplo n.º 11
0
        public static void Abort(IUnitOfData source, WF_WORKFLOW_INST WorkflowRow, FinishType finishType = FinishType.Abort)
        {
            WorkflowDbContext    dbContext = source as WorkflowDbContext;
            WorkflowContent      content   = WorkflowInstUtil.CreateContent(WorkflowRow);
            WF_WORKFLOW_INST_HIS wfi_His   = new WF_WORKFLOW_INST_HIS();

            //copy
            wfi_His.WI_ID              = WorkflowRow.WI_ID;
            wfi_His.WI_WD_NAME         = WorkflowRow.WI_WD_NAME;
            wfi_His.WI_CONTENT_XML     = WorkflowRow.WI_CONTENT_XML;
            wfi_His.WI_NAME            = WorkflowRow.WI_NAME;
            wfi_His.WI_CREATE_DATE     = WorkflowRow.WI_CREATE_DATE;
            wfi_His.WI_CREATE_USER     = WorkflowRow.WI_CREATE_USER;
            wfi_His.WI_REF_LIST        = WorkflowRow.WI_REF_LIST;
            wfi_His.WI_IS_TIMEOUT      = WorkflowRow.WI_IS_TIMEOUT;
            wfi_His.WI_TIMEOUT_DATE    = WorkflowRow.WI_TIMEOUT_DATE;
            wfi_His.WI_NEXT_EXE_DATE   = WorkflowRow.WI_NEXT_EXE_DATE;
            wfi_His.WI_PRIORITY        = WorkflowRow.WI_PRIORITY;
            wfi_His.WI_STATUS          = WorkflowRow.WI_STATUS;
            wfi_His.WI_ERROR_TYPE      = WorkflowRow.WI_ERROR_TYPE;
            wfi_His.WI_RETRY_TIMES     = WorkflowRow.WI_RETRY_TIMES;
            wfi_His.WI_MAX_RETRY_TIMES = WorkflowRow.WI_MAX_RETRY_TIMES;
            wfi_His.WI_WE_ID           = WorkflowRow.WI_WE_ID;
            wfi_His.WI_PARENT_ID       = WorkflowRow.WI_PARENT_ID;
            wfi_His.WI_PC_FLAG         = WorkflowRow.WI_PC_FLAG;
            //赋值
            wfi_His.WI_END_DATE  = dbContext.Now;
            wfi_His.WI_END_STATE = (int)finishType;
            if (!string.IsNullOrEmpty(WorkflowRow.WI_PROCESS_ID))
            {
                wfi_His.WI_END_USER = WorkflowRow.WI_PROCESS_ID;
            }
            else
            {
                wfi_His.WI_END_USER = GlobalVariable.UserId.ToString();
            }
            //附加
            dbContext.WF_WORKFLOW_INST_HIS.Add(wfi_His);
            ////copy步骤历史
            string wiId = WorkflowRow.WI_ID;
            List <WF_STEP_INST>     stepList    = dbContext.WF_STEP_INST.Where(a => a.SI_WI_ID == wiId).ToList();
            List <WF_STEP_INST_HIS> stepListHis = new List <WF_STEP_INST_HIS>();

            foreach (var step in stepList)
            {
                //------------
                WF_STEP_INST_HIS his = new WF_STEP_INST_HIS();
                his.SI_WI_ID             = step.SI_WI_ID;
                his.SI_CURRENT_STEP      = step.SI_CURRENT_STEP;
                his.SI_CURRENT_STEP_NAME = step.SI_CURRENT_STEP_NAME;
                his.SI_END_DATE          = step.SI_END_DATE;

                his.SI_FLOW_TYPE        = step.SI_FLOW_TYPE;
                his.SI_ID               = step.SI_ID;
                his.SI_INDEX            = step.SI_INDEX;
                his.SI_IS_TIMEOUT       = step.SI_IS_TIMEOUT;
                his.SI_LAST_MANUAL      = step.SI_LAST_MANUAL;
                his.SI_LAST_MANUAL_NAME = step.SI_LAST_MANUAL_NAME;
                his.SI_LAST_STEP        = step.SI_LAST_STEP;
                his.SI_LAST_STEP_NAME   = step.SI_LAST_STEP_NAME;
                his.SI_NOTE             = step.SI_NOTE;
                his.SI_PRIORITY         = step.SI_PRIORITY;
                his.SI_PROCESS_DATE     = step.SI_PROCESS_DATE;
                his.SI_PROCESS_ID       = step.SI_PROCESS_ID;
                his.SI_RECEIVE_DATE     = step.SI_RECEIVE_DATE;
                his.SI_RECEIVE_ID       = step.SI_RECEIVE_ID;
                his.SI_SEND_DATE        = step.SI_SEND_DATE;
                his.SI_SEND_ID          = step.SI_SEND_ID;
                his.SI_START_DATE       = step.SI_START_DATE;
                his.SI_STATUS           = step.SI_STATUS;
                his.SI_STEP_TYPE        = step.SI_STEP_TYPE;
                his.SI_TIME_SPAN        = step.SI_TIME_SPAN;
                his.SI_TIMEOUT_DATE     = step.SI_TIMEOUT_DATE;

                dbContext.WF_STEP_INST.Remove(step);
                dbContext.WF_STEP_INST_HIS.Add(his);
            }
            //新增最后一个步骤到历史
            WF_STEP_INST_HIS his_step = new WF_STEP_INST_HIS();

            // dbContext.WF_STEP_INST_HIS.Add(his_step);
            StepUtil.CopyWorkflowToStepHis(dbContext, WorkflowRow, his_step, FlowAction.Flow);
            dbContext.WF_STEP_INST_HIS.Add(his_step);
            ////更新主表信息
            //删除视力表

            content.EndMainRowStatus(dbContext, finishType);
            ////主表转移先不做
            ////--提交
            dbContext.WF_WORKFLOW_INST.Remove(WorkflowRow);
            dbContext.Submit();
        }
Ejemplo n.º 12
0
 public MessageService()
 {
     fUnitOfData = AtawAppContext.Current.UnitOfData;
 }
Ejemplo n.º 13
0
 public RoleAndUSerDa(IUnitOfData dbContext)
     : base(dbContext)
 {
 }
Ejemplo n.º 14
0
 public override bool Match(WF_WORKFLOW_INST mainRow, WorkflowContent content, IUnitOfData source)
 {
     return(!base.Match(mainRow, content, source));
 }
Ejemplo n.º 15
0
 public RoleDa(IUnitOfData dbContext)
     : base(dbContext)
 {
 }
Ejemplo n.º 16
0
 public BlogBaseBF SetUnitOfData(string connstring)
 {
     fUnitOfData = new BlogDbContext(connstring);
     ((BlogDbContext)fUnitOfData).Database.EnsureCreated();
     return(this);
 }
Ejemplo n.º 17
0
 public void BeginStepExecute(int priority, string workflowName, string content, IUnitOfData context)
 {
     throw new System.NotImplementedException();
 }
Ejemplo n.º 18
0
        public void BeginStepExecute(StepConfig stepConfig, int priority, string workflowName, WorkflowContent content, IUnitOfData context)
        {
            StringBuilder sb = new StringBuilder();

            content.SaveStringBuilder(sb);
            // throw new System.NotImplementedException();

            WorkflowDbContext wfContent = context as WorkflowDbContext;

            //ATAW_WORKFLOWContext wfContent = context as ATAW_WORKFLOWContext;
            WF_WORKFLOW_INST inst = new WF_WORKFLOW_INST();

            inst.WI_ID          = wfContent.GetUniId();
            inst.WI_CONTENT_XML = sb.ToString();
            inst.WI_NAME        = workflowName;
            wfContent.WF_WORKFLOW_INST.Add(inst);

            //步骤基本信息
            StepUtil.SetWorkflowByStep(inst, stepConfig.Name, stepConfig.DisplayName, wfContent.Now,
                                       (int)stepConfig.StepType, (int)StepState.ProcessNotSend);
            inst.WI_INDEX    = 1;
            inst.WI_PRIORITY = priority;
            //扩展信息
            //父子流程
            //主表控制
            content.SetAllMainRow(wfContent, stepConfig, inst.WI_ID);
        }
Ejemplo n.º 19
0
 public OrgDa(IUnitOfData dbContext)
     : base(dbContext)
 {
 }
Ejemplo n.º 20
0
 public abstract void InsertSql(string text, IUnitOfData unit);
Ejemplo n.º 21
0
 public UserDetailDa(IUnitOfData dbContext)
     : base(dbContext)
 {
 }
Ejemplo n.º 22
0
 public void SetUnitOfData(IUnitOfData unitOfData)
 {
     fUnitOfData     = unitOfData;
     isSysUnitOfData = false;
 }
Ejemplo n.º 23
0
 public BlogRepository(IUnitOfData dbContext)
     : base(dbContext as DbContext)
 {
 }
Ejemplo n.º 24
0
 public void addUnitOfData(IUnitOfData unitOfData)
 {
     //throw new NotImplementedException();
     this.AtawDbContextList.Add(unitOfData);
 }
Ejemplo n.º 25
0
 public static void OverTryTimesAbort(IUnitOfData source, WF_WORKFLOW_INST WorkflowRow)
 {
     Abort(source, WorkflowRow, FinishType.OverTryTimes);
 }
Ejemplo n.º 26
0
 public abstract WorkflowContent CreateContent(IUnitOfData source);
Ejemplo n.º 27
0
 public UserAndRoleDa(IUnitOfData dbContext)
     : base(dbContext)
 {
 }
Ejemplo n.º 28
0
 public abstract void CreateWorkflowName(IUnitOfData source);
Ejemplo n.º 29
0
 public DATest(IUnitOfData dbContext) : base(dbContext)
 {
 }
Ejemplo n.º 30
0
 public virtual void Prepare(WF_WORKFLOW_INST workflowRow, IUnitOfData source)
 {
 }