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