Exemplo n.º 1
0
        /// <summary>
        /// 继续执行工作流
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="user"></param>
        /// <param name="ExecuteResult"></param>
        /// <param name="ExecuteComment"></param>
        /// <param name="Memo"></param>
        public void LabData_ContinueDBWF(string InstanceStepExecutorId, string ToStepId, string ExecuteResult, string ExecuteComment, string Memo,
                                         string currentUserId, string currentUserName, bool continueWF)
        {
            var InstanceStepExecutor = InstanceStepExecutorDAO.Get(InstanceStepExecutorId);
            var InstanceStep         = WFDA.Instance.GetInstanceStep(InstanceStepExecutor.InstanceStepId);
            var Instance             = WFDA.Instance.GetInstance(InstanceStepExecutor.InstanceId);

            // 更新 InstanceStepExecutor 的 Extend01 字段,让工作流进行流转
            var toStep = WFDA.Instance.GetStep(ToStepId);

            SetFinished(InstanceStepExecutorId, ExecuteResult, ExecuteComment, Memo, currentUserName);
            WFDA.Instance.UpdateInstanceStepExt(InstanceStep.InstanceStepId, "Extend01", toStep.StepId, currentUserName);
            WFDA.Instance.UpdateInstanceStepExt(InstanceStep.InstanceStepId, "Extend02", toStep.StepName, currentUserName);

            if (continueWF)
            {
                var engine = NinjectHelper.Get <IEngine>();
                if (engine == null)
                {
                    throw new Exception("找不到 IEngine".GetRes());
                }
                // 继续工作流
                engine.ContinueDBWF(Instance.ModelId, Instance.InstanceId, InstanceStep.InstanceStepId, true, currentUserId, currentUserName);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 转签或者加签
        /// </summary>
        /// <param name="InstanceStepExecutorId"></param>
        /// <param name="list"></param>
        /// <param name="ExecuteComment"></param>
        /// <param name="ExecuteResult"></param>
        /// <param name="p"></param>
        public void TransferOrAdditional(string InstanceStepExecutorId, List <VM_WF_M_USER> list, string ExecuteComment, string ExecuteResult, string currentUser)
        {
            WFInstance                Instance;
            WFInstanceStep            InstanceStep;
            WF_M_STEP                 Step;
            WF_T_INSTANCESTEPEXECUTOR InstanceStepExecutor;

            InstanceStepExecutorDAO.GetAllInfo(InstanceStepExecutorId,
                                               out InstanceStepExecutor, out InstanceStep, out Instance, out Step);

            ExecuteComment = string.Format("{0}\r\n{1}", ExecuteComment, InstanceStepExecutor.ExecuteComment);
            var engine = NinjectHelper.Get <IEngine>();

            if (engine == null)
            {
                throw new WFException("找不到 IEngine".GetRes());
            }

            var memo = string.Format("{0}{1}给{2}", currentUser, ExecuteResult, string.Join(",", list.Select(a => a.UserName)));

            // 加签或者转签
            for (int i = 0; i < list.Count; i++)
            {
                var user = list[i];
                var listInstanceStepExecutorIds = ExecutorImp.InsertOneAndProxy(InstanceStep.InstanceStepId, user.UserId, user.UserName
                                                                                , memo, currentUser, true);
                SaveAdditionalApproveInfo(listInstanceStepExecutorIds, ExecuteResult, InstanceStepExecutor.InstanceStepExecutorId, user.UserName);
            }
            if (ExecuteResult == "加签" && string.IsNullOrWhiteSpace(InstanceStep.Extend04))
            {
                WFDA.Instance.UpdateInstanceStepExt(InstanceStep.InstanceStepId, "Extend04", InstanceStepExecutorId, currentUser);
            }
            // 结束当前我自己的任务
            SetFinished(InstanceStepExecutorId, ExecuteResult, ExecuteComment, memo, currentUser);
        }
Exemplo n.º 3
0
        private static void RunSingle(Condition firstCondition, bool firstValue)
        {
            var solver          = NinjectHelper.Get <IBDDSolver>();
            var secondCondition = new Condition()
            {
                { "a", firstValue }
            };

            var automata = TestHelper.CreateAutomataWithConditions(firstCondition, secondCondition);

            var booleanNetwork = CreateBooleanNetwork();

            var availableFunctions = new Dictionary <string, List <int> >()
            {
                { "a", new List <int>()
                  {
                      47
                  } }
            };
            var res = solver.IsValidPath(automata, booleanNetwork, availableFunctions);

            Assert.IsTrue(res);

            secondCondition = new Condition()
            {
                { "a", !firstValue }
            };
            automata = TestHelper.CreateAutomataWithConditions(firstCondition, secondCondition);
            solver   = NinjectHelper.Get <IBDDSolver>();
            res      = solver.IsValidPath(automata, booleanNetwork, availableFunctions);

            Assert.IsFalse(res);
        }
Exemplo n.º 4
0
        internal static DataGridVM DeleteForm(DFDictionary queryParameters)
        {
            FormM        form   = null;
            DFDictionary entity = null;

            DFPub.SetDBEntity(queryParameters, ref form, ref entity);
            var vm      = new DataGridVM();
            var message = string.Empty;
            var da      = NinjectHelper.Get <IDA>(form.DAImp);

            try
            {
                if (null == da)
                {
                    throw new Exception("Invalid DAImp");
                }
                if (da.Delete(form, entity, vm, ref message) != 0)
                {
                    vm.hasError = true;
                }
                vm.error = message;
            }
            catch (Exception ex)
            {
                m_log.Error(ex.Message, ex);
                vm.hasError = true;
                vm.error    = ex.Message;
            }
            return(vm);
        }
Exemplo n.º 5
0
        public void TestSCaseWithMultipleParametersAddSomeParamsMissingInSomeNodes()
        {
            var solver = NinjectHelper.Get <IBDDSolver>();

            var automata = new GeneNode()
            {
                CurrentCondition = new Condition()
                {
                    { "a", true }, { "b", false }, { "c", true }
                },
                NodeName    = "n0",
                Transitions = new List <GeneTransition>()
                {
                    new GeneTransition()
                    {
                        Node = new GeneNode()
                        {                                       // not C here
                            CurrentCondition = new Condition()
                            {
                                { "a", false }, { "b", true }
                            },
                            NodeName    = "n1",
                            Transitions = new List <GeneTransition>()
                            {
                                new GeneTransition()
                                {
                                    Node = new GeneNode()
                                    {
                                        NodeName         = "n2",
                                        CurrentCondition = new Condition()
                                        {
                                            { "a", true }, { "b", false }, { "c", true }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };


            // C not exist here!!
            var booleanNetwork = new List <GeneLink>()
            {
                new GeneLink()
                {
                    From = "a", To = "a", IsPositive = false
                },
                new GeneLink()
                {
                    From = "b", To = "b", IsPositive = false
                },
            };

            var res = solver.IsValidPath(automata, booleanNetwork);

            Assert.IsTrue(res);
        }
Exemplo n.º 6
0
        public void TestSCaseWithThreeParametersAndThreeRulesBDDSolver()
        {
            var solver = NinjectHelper.Get <IBDDSolver>();

            var automata = new GeneNode()
            {
                CurrentCondition = new Condition()
                {
                    { "a", true }, { "b", false }, { "c", true }
                },
                NodeName    = "n0",
                Transitions = new List <GeneTransition>()
                {
                    new GeneTransition()
                    {
                        Node = new GeneNode()
                        {
                            CurrentCondition = new Condition()
                            {
                                { "a", false }, { "b", true }, { "c", true }
                            },
                            NodeName = "n1",
                            //Transitions = new List<GeneTransition>()
                            //{
                            //    new GeneTransition()
                            //    {
                            //       Node = new GeneNode()
                            //        {
                            //            NodeName = "n2",
                            //            CurrentCondition = new Condition() { { "a", true }, { "b", false }, {"c", false} }

                            //        }
                            //    }
                            //}
                        }
                    }
                }
            };

            var booleanNetwork = new List <GeneLink>()
            {
                new GeneLink()
                {
                    From = "a", To = "a", IsPositive = false
                },
                new GeneLink()
                {
                    From = "b", To = "b", IsPositive = false
                },
                new GeneLink()
                {
                    From = "a", To = "c", IsPositive = true
                },
            };

            var res = solver.IsValidPath(automata, booleanNetwork);

            Assert.IsTrue(res);
        }
Exemplo n.º 7
0
        public void RegisterType_InvalidContainer()
        {
            var helper = new NinjectHelper();

            var container = new object();

            ExceptionTester.CallMethodAndExpectException <NotSupportedException>(() => helper.RegisterType(container, typeof(ITestInterface), typeof(TestClass1), RegistrationType.Singleton));
        }
Exemplo n.º 8
0
        public void IsValidContainer_ValidContainer()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            Assert.IsTrue(helper.IsValidContainer(container));
        }
Exemplo n.º 9
0
        public void RegisterInstance_InvalidContainer()
        {
            var helper = new NinjectHelper();

            var container = new object();

            ExceptionTester.CallMethodAndExpectException <NotSupportedException>(() => helper.RegisterInstance(container, typeof(ITestInterface), new TestClass1()));
        }
Exemplo n.º 10
0
        public void ResolveType_InterfaceTypeNull()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => helper.ResolveType(container, null));
        }
Exemplo n.º 11
0
        public void ResolveType_InvalidContainer()
        {
            var helper = new NinjectHelper();

            var container = new object();

            ExceptionTester.CallMethodAndExpectException <NotSupportedException>(() => helper.ResolveType(container, typeof(ITestInterface)));
        }
Exemplo n.º 12
0
        public void GetRegistrationInfo_InterfaceTypeNull()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => helper.GetRegistrationInfo(container, null));
        }
Exemplo n.º 13
0
        public void GetRegistrationInfo_InvalidContainer()
        {
            var helper = new NinjectHelper();

            var container = new object();

            ExceptionTester.CallMethodAndExpectException <NotSupportedException>(() => helper.GetRegistrationInfo(container, typeof(ITestInterface)));
        }
Exemplo n.º 14
0
 void Application_Start(object sender, EventArgs e)
 {
     // Code that runs on application startup
     AreaRegistration.RegisterAllAreas();
     GlobalConfiguration.Configure(WebApiConfig.Register);
     NinjectHelper.Configure();
     RouteConfig.RegisterRoutes(RouteTable.Routes);
 }
Exemplo n.º 15
0
        public void RegisterType_ImplementingTypeNull()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => helper.RegisterType(container, typeof(ITestInterface), null, RegistrationType.Singleton));
        }
Exemplo n.º 16
0
        public void IsValidContainer_InvalidContainer()
        {
            var helper = new NinjectHelper();

            var container = new object();

            Assert.IsFalse(helper.IsValidContainer(container));
        }
Exemplo n.º 17
0
        public void GetRegistrationInfo_ContainerWithoutTypeRegistered()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            Assert.IsNull(helper.GetRegistrationInfo(container, typeof(ITestInterface)));
        }
Exemplo n.º 18
0
        public void ResolveType_ContainerWithoutTypeRegistered()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            ExceptionTester.CallMethodAndExpectException <NotSupportedException>(() => helper.ResolveType(container, typeof(ITestInterface)));
        }
Exemplo n.º 19
0
        public void RegisterInstance_InstanceNull()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            ExceptionTester.CallMethodAndExpectException <ArgumentNullException>(() => helper.RegisterInstance(container, typeof(ITestInterface), null));
        }
Exemplo n.º 20
0
        protected override void OnStartup(StartupEventArgs e)
        {
            NinjectHelper.CreateKernel();
            var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RutherfordEntities"].ConnectionString;

            NinjectHelper.Kernel.Load(new Rutherford.Service.NinjectModules.ServiceModule(connectionString));
            NinjectHelper.Kernel.Load(new Rutherford.Client.NinjectModules.WpfModule());
            base.OnStartup(e);
        }
        public override int Delete(FormM form, DFDictionary entity, ref string message)
        {
            var user = Util.GetCurrentUser();
            var data = JsonSerializeHelper.DeserializeObject <List <Dictionary <string, string> > >(entity["data"]);

            if (data == null)
            {
                throw new Exception("无效的参数 data".GetRes());
            }
            if (entity["subAction"] == "DeleteWorkflow")
            {
                using (var db = Pub.DB)
                {
                    var sql = "exec wfsp_delete_instance @InstanceId";
                    db.Execute(sql, data.Select(a => new { InstanceId = a["InstanceId"] }));
                    message = "删除成功".GetRes();
                }
            }
            else if (entity["subAction"] == "CancelWorkflow")
            {
                var engine = NinjectHelper.Get <IEngine>();
                if (engine == null)
                {
                    throw new Exception("找不到 IEngine".GetRes());
                }
                var failed  = 0;
                var success = 0;
                foreach (var item in data)
                {
                    var InstanceId = item["InstanceId"];
                    if (!string.IsNullOrWhiteSpace(InstanceId))
                    {
                        var Instance = WFDA.Instance.GetInstance(InstanceId);
                        if (null != Instance && Instance.InstanceStatus == Pub.Running)
                        {
                            if (engine.AbortWF(Instance.InstanceId, user.UserId, user.UserName))
                            {
                                AbortWF(Instance.InstanceId);
                                success++;
                            }
                            else
                            {
                                failed++;
                            }
                        }
                        else
                        {
                            failed++;
                        }
                    }
                }
                message = string.Format("成功取消流程 {0} 个,失败 {1} 个", success, failed);
            }
            return(DFPub.EXECUTE_SUCCESS);
        }
Exemplo n.º 22
0
        public void TestCaseWithOneParametersAndTwoStepsIn_Time_2_BDDSolverShouldPass()
        {
            var solver = NinjectHelper.Get <IBDDSolver>();

            var automata = new GeneNode()
            {
                CurrentCondition = new Condition()
                {
                    { "a", true }
                },
                NodeName    = "n0",
                Transitions = new List <GeneTransition>()
                {
                    new GeneTransition()
                    {
                        Node = new GeneNode()
                        {
                            CurrentCondition = new Condition()
                            {
                                { "a", true }
                            },
                            NodeName    = "n1",
                            Transitions = new List <GeneTransition>()
                            {
                                new GeneTransition()
                                {
                                    Node = new GeneNode()
                                    {
                                        CurrentCondition = new Condition()
                                        {
                                            { "a", true }
                                        },
                                        NodeName = "n2"
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var booleanNetwork = new List <GeneLink>()
            {
                new GeneLink()
                {
                    From = "a", To = "a", IsPositive = true
                },
                //new GeneLink() {From = "b", To = "b", IsPositive = false}
            };

            var res = solver.IsValidPath(automata, booleanNetwork);

            Assert.IsTrue(res);
        }
Exemplo n.º 23
0
        public void RegisterType_Valid()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            Assert.IsFalse(GetRegistrationInfo(container, (typeof(ITestInterface))));

            helper.RegisterType(container, typeof(ITestInterface), typeof(TestClass1), RegistrationType.Singleton);
            Assert.IsTrue(GetRegistrationInfo(container, typeof(ITestInterface)));
        }
Exemplo n.º 24
0
        public void TestPositiveConnectionCantPassWithNegativeValue()
        {
            var solver = NinjectHelper.Get <IBDDSolver>();

            var automata = new GeneNode()
            {
                CurrentCondition = new Condition()
                {
                },
                NodeName    = "n0",
                Transitions = new List <GeneTransition>()
                {
                    new GeneTransition()
                    {
                        Node = new GeneNode()
                        {
                            CurrentCondition = new Condition()
                            {
                                { "a", true }
                            },
                            NodeName    = "n1",
                            Transitions = new List <GeneTransition>
                            {
                                new GeneTransition()
                                {
                                    Node = new GeneNode()
                                    {
                                        CurrentCondition = new Condition()
                                        {
                                            { "a", false }
                                        },
                                        NodeName = "n2",
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var booleanNetwork = new List <GeneLink>()
            {
                new GeneLink()
                {
                    From = "a", To = "a", IsPositive = true
                },
                //new GeneLink() {From = "b", To = "b", IsPositive = false}
            };

            var res = solver.IsValidPath(automata, booleanNetwork);

            Assert.IsFalse(res);
        }
Exemplo n.º 25
0
        public void TestCaseWithOneParameterAndTwoStepsSameAsAboveStartFromNegative()
        {
            var solver = NinjectHelper.Get <IBDDSolver>();

            var automata = new GeneNode()
            {
                CurrentCondition = new Condition()
                {
                    { "a", false }
                },
                NodeName    = "n0",
                Transitions = new List <GeneTransition>()
                {
                    new GeneTransition()
                    {
                        Node = new GeneNode()
                        {
                            CurrentCondition = new Condition()
                            {
                                { "a", false }
                            },
                            NodeName    = "n1",
                            Transitions = new List <GeneTransition>()
                            {
                                new GeneTransition()
                                {
                                    Node = new GeneNode()
                                    {
                                        CurrentCondition = new Condition()
                                        {
                                            { "a", true }
                                        },
                                        NodeName = "n2",
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var booleanNetwork = new List <GeneLink>()
            {
                new GeneLink()
                {
                    From = "a", To = "a", IsPositive = false
                },
            };

            var res = solver.IsValidPath(automata, booleanNetwork);

            Assert.IsFalse(res);
        }
Exemplo n.º 26
0
        public void ResolveType_ContainerWithTypeRegistered()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            container.Bind(typeof(ITestInterface)).To <TestClass1>();
            var resolvedInstance = helper.ResolveType(container, typeof(ITestInterface));

            Assert.IsNotNull(resolvedInstance);
            Assert.IsInstanceOfType(resolvedInstance, typeof(TestClass1));
        }
Exemplo n.º 27
0
        public void GetRegistrationInfo_ContainerWithSingletonTypeRegistered()
        {
            var helper = new NinjectHelper();

            var container = new StandardKernel();

            container.Bind <ITestInterface>().To <TestClass1>().InSingletonScope();

            var registrationInfo = helper.GetRegistrationInfo(container, typeof(ITestInterface));

            Assert.AreEqual(typeof(ITestInterface), registrationInfo.DeclaringType);
            Assert.AreEqual(RegistrationType.Singleton, registrationInfo.RegistrationType);
        }
Exemplo n.º 28
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //Ninject
            NinjectModule ninjectBO  = new NinjectUnitOfWork("Model1");
            NinjectModule ninjectWeb = new NinjectHelper();

            var kernel = new StandardKernel(ninjectWeb, ninjectBO);

            DependencyResolver.SetResolver(new Ninject.Web.Mvc.NinjectDependencyResolver(kernel));
        }
Exemplo n.º 29
0
        public override DFDictionary Get(FormM form, DFDictionary entity, ref string message)
        {
            if (string.IsNullOrWhiteSpace(entity["ModelId"]))
            {
                throw new Exception("缺少参数 ModelId".GetRes());
            }

            var engine = NinjectHelper.Get <IEngine>();

            if (engine == null)
            {
                throw new Exception("找不到 IEngine".GetRes());
            }

            var user       = Util.GetCurrentUser();
            var instanceId = Pub.GetNextIdFromDB("T", DateTime.Now.ToString("yyyyMMdd"), string.Empty, 4);

            var Requestor          = user.UserId;
            var RequestorName      = user.UserName;
            var RequestorProxy     = string.Empty;
            var RequestorProxyName = string.Empty;


            // 开始工作流
            engine.StartDBWF(entity["ModelId"], instanceId, Requestor, RequestorProxy, RequestorName,
                             RequestorProxyName, DateTime.Now, true, user.UserId, user.UserName);

            var dict = new DFDictionary();

            if (!string.IsNullOrWhiteSpace(entity["ModelId"]))
            {
                using (var db = Pub.DB)
                {
                    var sql = "select * from WF_T_INSTANCE where 1=1";
                    sql += " and InstanceId=@InstanceId";
                    var parameters = new
                    {
                        InstanceId = instanceId
                    };
                    var item = db.Query <WF_T_INSTANCE>(sql, parameters).FirstOrDefault();
                    if (item != null)
                    {
                        dict = DFDictionary.Create <WF_T_INSTANCE>(item);
                    }
                }
            }
            return(dict);
        }
Exemplo n.º 30
0
        public void RegisterInstance_Valid()
        {
            var helper   = new NinjectHelper();
            var instance = new TestClass1()
            {
                Name = "test"
            };

            var container = new StandardKernel();

            Assert.IsFalse(GetRegistrationInfo(container, typeof(ITestInterface)));

            helper.RegisterInstance(container, typeof(ITestInterface), instance);
            Assert.IsTrue(GetRegistrationInfo(container, typeof(ITestInterface)));
            Assert.AreEqual(instance, container.Get <ITestInterface>());
        }