/// <summary> /// 实现回写 /// </summary> public override void WriteBackToBusiness() { DynamicParameters parameters = new DynamicParameters(); parameters.Add("ProcessId", ProcessId); WfFormInstance form = DbSession.QueryFirstOrDefaultWhere <WfFormInstance>("ProcessId=@ProcessId", parameters); if (form == null) { return; } //回写到业务表 bool result = _config.ExecBillWriteBack(form.AppInstanceTableName, form.AppInstanceId, DbSession); if (result) { //设置流程实例的回写状态 WfProcessInstance process = this.DbSession.Get <WfProcessInstance>(this.ProcessId); if (process != null) { process.WriteBackState = 1; process.WriteBackTime = PublicUtils.CurrentDateTimeStr; this.DbSession.Update <WfProcessInstance>(process); } } }
/// <summary> /// 流程过程中更新单据 /// </summary> public override void UpdateBill(EnumProcessState state) { DynamicParameters parameters = new DynamicParameters(); parameters.Add("ProcessId", ProcessId); WfFormInstance form = DbSession.QueryFirstOrDefaultWhere <WfFormInstance>("ProcessId=@ProcessId", parameters); if (form == null) { return; } //更新到单据表 if (state == EnumProcessState.Startup) { base.UpdateBillDataWhenStartup(form.AppInstanceTableName, form.AppInstanceId); } else if (state == EnumProcessState.Processing) { base.UpdateBillDataWhenProcessing(form.AppInstanceTableName, form.AppInstanceId); } else if (state == EnumProcessState.Completed) { base.UpdateBillDataWhenComplete(form.AppInstanceTableName, form.AppInstanceId); } }
/// <summary> /// 流程失败时处理 /// </summary> public override void HandleWhenError() { DynamicParameters parameters = new DynamicParameters(); parameters.Add("ProcessId", ProcessId); WfFormInstance form = DbSession.QueryFirstOrDefaultWhere <WfFormInstance>("ProcessId=@ProcessId", parameters); if (form == null) { return; } //删除该表单 DbSession.Delete <WfFormInstance>(form); }
//public static WriteBackFactory instance = null; //private static object obj = new object(); //private WriteBackFactory() //{ //} //public static WriteBackFactory GetInstance() //{ // if (instance == null) // { // lock (obj) // { // if (instance == null) // { // instance = new WriteBackFactory(); // } // } // } // return instance; //} public static IWriteBackRule GetWriteBackRule(string processId, string taskId, IDbSession dbSession, IFapConfigService config) { DynamicParameters parameters = new DynamicParameters(); parameters.Add("ProcessId", processId); WfFormInstance form = dbSession.QueryFirstOrDefault <WfFormInstance>("select * from WfFormInstance where ProcessId=@ProcessId", parameters); if (form.FormType != WfFormType.NoneForm) //外挂表单 { //if (form.AddonType == WfFormAddonType.Internal) //内置单据 //{ // return new AddonFormInternalWriteBack(processId,taskId, dbSession, config); //} } return(null); }