예제 #1
0
        /// <summary>
        /// 动态获取路线,根据决策节点设置条件表达式,自动去判断流转的路线
        /// </summary>
        /// <returns>路线</returns>
        public Transition GetTransition()
        {
            Command       CMD     = GetExecuteCmd();
            IDbConnection connect = DapperFactory.CreateConnection(CMD.PROVIDERNAME, CMD.CONNECTE);

            try
            {
                DataTable resultSet = new DataTable(Guid.NewGuid().ToString());
                using (IDataReader reader = connect.ExecuteReader(CMD.SCRIPT, new { INSTANCEID = INSTANCEID }))
                {
                    resultSet.Load(reader);
                    reader.Close();
                }
                Transition        instance    = null;
                List <Transition> transitions = QueryWorkflowNode(NID);
                if (resultSet.Rows.Count > 0)
                {
                    foreach (Transition transition in transitions)
                    {
                        if (resultSet.Select(transition.EXPRESSION).Length > 0)
                        {
                            instance = transition;
                            break;
                        }
                    }
                }
                Assert.CheckNull(instance, "instance");
                return(instance);
            }
            catch (Exception ex)
            {
                throw new WorkflowException(ex, INSTANCEID);
            }
        }
예제 #2
0
        /// <summary>
        /// 动态获取路线,根据决策节点设置条件表达式,自动去判断流转的路线
        /// </summary>
        /// <returns>路线</returns>
        public Transition GetTransition()
        {
            Command        command = GetExecuteCmd();
            WorkflowConfig config  = WorkflowConfig.GetInstance(command.ID);

            IDbConnection connection = DapperFactory.CreateConnection(config.ProviderName, config.ConnectionString);

            try
            {
                DataTable resultSet = new DataTable(Guid.NewGuid().ToString());
                using (IDataReader reader = connection.ExecuteReader(command.Text, new { InstanceID = InstanceID }))
                {
                    resultSet.Load(reader);
                    reader.Close();
                }
                Transition        instance    = null;
                List <Transition> transitions = QueryWorkflowNode(NID);
                if (resultSet.Rows.Count > 0)
                {
                    foreach (Transition transition in transitions)
                    {
                        if (resultSet.Select(transition.Expression).Length > 0)
                        {
                            instance = transition;
                            break;
                        }
                    }
                }
                return(instance);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #3
0
        internal static IDbConnection CreateWorkflowConnection()
        {
            SmartflowConfiguration config = ConfigurationManager.GetSection("smartflowConfiguration") as
                                            SmartflowConfiguration;

            return(DapperFactory.CreateConnection(config.ProviderName, config.ConnectionString));
        }
예제 #4
0
        public static IDbConnection CreateWorkflowConnection()
        {
            SmartflowConfiguration config = ConfigurationManager.GetSection("smartflowConfiguration") as
                                            SmartflowConfiguration;

            Assert.CheckNull(config, "SmartflowConfiguration");
            return(DapperFactory.CreateConnection(config.ProviderName, config.ConnectionString));
        }
예제 #5
0
        public static IDbConnection CreateWorkflowConnection()
        {
            SmartflowConfiguration config = ConfigurationManager.GetSection("smartflowConfiguration") as SmartflowConfiguration;

            Assert.CheckNull(config, "smartflowConfiguration");
            Assert.StringNull(config.ConnectionString, "ConnectionString");
            Assert.StringNull(config.DatabaseCategory, "DatabaseCategory");

            DatabaseCategory dbc;

            if (Enum.TryParse(config.DatabaseCategory, true, out dbc) || String.IsNullOrEmpty(config.ConnectionString))
            {
                return(DapperFactory.CreateConnection(dbc, config.ConnectionString));
            }
            else
            {
                throw new WorkflowException(ResourceManage.GetString(ResourceManage.CONNECTION_CONFIG));
            }
        }