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); } }
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 } } ); }
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 } } ); }
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); } }
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; }
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); }); }
public void ManualCompletePush(string manualUserId, NodeRequest nodeRequest, DataAccess.WF_WORKFLOW_INST mainRow, IUnitOfData source) { // throw new NotImplementedException(); }
public abstract void UpdateWorkflowRow(IUnitOfData source);
public void DoAction(string userId, DataAccess.WF_WORKFLOW_INST mainRow, WorkflowContent content, IUnitOfData source) { // throw new NotImplementedException(); }
public static void ErrorAbort(IUnitOfData source, WF_WORKFLOW_INST WorkflowRow) { Abort(source, WorkflowRow, FinishType.Error); }
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(); }
public MessageService() { fUnitOfData = AtawAppContext.Current.UnitOfData; }
public RoleAndUSerDa(IUnitOfData dbContext) : base(dbContext) { }
public override bool Match(WF_WORKFLOW_INST mainRow, WorkflowContent content, IUnitOfData source) { return(!base.Match(mainRow, content, source)); }
public RoleDa(IUnitOfData dbContext) : base(dbContext) { }
public BlogBaseBF SetUnitOfData(string connstring) { fUnitOfData = new BlogDbContext(connstring); ((BlogDbContext)fUnitOfData).Database.EnsureCreated(); return(this); }
public void BeginStepExecute(int priority, string workflowName, string content, IUnitOfData context) { throw new System.NotImplementedException(); }
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); }
public OrgDa(IUnitOfData dbContext) : base(dbContext) { }
public abstract void InsertSql(string text, IUnitOfData unit);
public UserDetailDa(IUnitOfData dbContext) : base(dbContext) { }
public void SetUnitOfData(IUnitOfData unitOfData) { fUnitOfData = unitOfData; isSysUnitOfData = false; }
public BlogRepository(IUnitOfData dbContext) : base(dbContext as DbContext) { }
public void addUnitOfData(IUnitOfData unitOfData) { //throw new NotImplementedException(); this.AtawDbContextList.Add(unitOfData); }
public static void OverTryTimesAbort(IUnitOfData source, WF_WORKFLOW_INST WorkflowRow) { Abort(source, WorkflowRow, FinishType.OverTryTimes); }
public abstract WorkflowContent CreateContent(IUnitOfData source);
public UserAndRoleDa(IUnitOfData dbContext) : base(dbContext) { }
public abstract void CreateWorkflowName(IUnitOfData source);
public DATest(IUnitOfData dbContext) : base(dbContext) { }
public virtual void Prepare(WF_WORKFLOW_INST workflowRow, IUnitOfData source) { }