コード例 #1
0
        /// <summary>
        /// 快递发货
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Delivery(ProductOrderEntity entity)
        {
            var appResult = WfAppResult.Default();
            var wfas      = new WfAppInteropService();

            using (var session = DbFactory.CreateSession())
            {
                var transaction = session.DbContext.Database.BeginTransaction();
                try
                {
                    //流程运行
                    var actionParameterInternal = new ActionParameterInternal();
                    actionParameterInternal.MethodParameters = new object[] { "alexsenda" };

                    WfAppRunner.ActionMethodParameters = new Dictionary <string, ActionParameterInternal>();
                    WfAppRunner.ActionMethodParameters.Add("CallHello", actionParameterInternal);

                    var result = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                    if (result.Status == WfExecutedStatus.Success)
                    {
                        //写步骤记录表
                        Write(session, WfAppRunner, "发货", entity.ID.ToString(), entity.OrderCode, "完成发货");

                        //业务数据处理部分,此处是简单示例...
                        short status = GetProductOrderStatusByActivityCode(WfAppRunner.ProcessGUID, WfAppRunner.Version,
                                                                           WfAppRunner.NextActivityPerformers.Keys.ElementAt <string>(0));
                        UpdateStatus(entity.ID, status, session);

                        transaction.Commit();
                        appResult = WfAppResult.Success();
                    }
                    else
                    {
                        transaction.Rollback();
                        appResult = WfAppResult.Error(result.Message);
                    }
                }
                catch (System.Exception ex)
                {
                    transaction.Rollback();
                    appResult = WfAppResult.Error(ex.Message);
                }
                finally
                {
                    session.Dispose();
                }
                return(appResult);
            }
        }
コード例 #2
0
        /// <summary>
        /// 快递发货
        /// </summary>
        /// <param name="entity"></param>
        public WfAppResult Delivery(ProductOrderEntity entity)
        {
            var appResult = WfAppResult.Default();
            var wfas = new WfAppInteropService();
            var session = SessionFactory.CreateSession();
            try
            {
                session.BeginTrans();

                //流程运行
                var actionParameterInternal = new ActionParameterInternal();
                actionParameterInternal.MethodParameters = new object[] {"alexsenda"};

                WfAppRunner.ActionMethodParameters = new Dictionary<string, ActionParameterInternal>();
                WfAppRunner.ActionMethodParameters.Add("CallHello", actionParameterInternal);

                var result = wfas.RunProcess(session, WfAppRunner, WfAppRunner.Conditions);
                if (result.Status == WfExecutedStatus.Success)
                {
                    //写步骤记录表
                    Write(session, WfAppRunner, "发货", entity.ID.ToString(), entity.OrderCode, "完成发货");

                    //业务数据处理部分,此处是简单示例...
                    UpdateStatus(entity.ID, (short)ProductOrderStatusEnum.Deliveried, session);
                    session.Commit();
                    appResult = WfAppResult.Success();
                }
                else
                {
                    session.Rollback();
                    appResult = WfAppResult.Error(result.Message);
                }
            }
            catch (System.Exception ex)
            {
                session.Rollback();
                appResult = WfAppResult.Error(ex.Message);
            }
            finally
            {
                session.Dispose();
            }
            return appResult;
        }
コード例 #3
0
ファイル: ActionExecutor.cs プロジェクト: zeroyou/FapCore3.0
 /// <summary>
 /// 调用外部事件方法的实现过程
 /// <param name="action">操作</param>
 /// <param name="parameters">参数</param>
 /// </summary>
 internal void Execute(ActionEntity action, ActionParameterInternal parameters)
 {
     if (action.ActionType == ActionTypeEnum.ExternalMethod)
     {
         //取出当前应用程序执行路径
         var  executingPath       = Environment.CurrentDirectory;
         var  pluginAssemblyName  = Path.Combine(executingPath, "plugin", action.AssemblyFullName);
         var  pluginAssemblyTypes = Assembly.LoadFile(pluginAssemblyName).GetTypes();
         Type outerInfterface     = pluginAssemblyTypes
                                    .Single(t => t.Name == action.InterfaceFullName && t.IsInterface);
         Type outerClass = pluginAssemblyTypes
                           .Single(t => !t.IsInterface && outerInfterface.IsAssignableFrom(t));
         object     instance = Activator.CreateInstance(outerClass, parameters.ConstructorParameters);
         MethodInfo mi       = outerClass.GetMethod(action.MethodName);
         var        result   = mi.Invoke(instance, parameters.MethodParameters);
     }
     else if (action.ActionType == ActionTypeEnum.WebApi)
     {
         throw new ApplicationException("调用WebAPI功能暂未实现!");
     }
 }