예제 #1
0
파일: Sequence.cs 프로젝트: jbo2014/AntOA
        /// <summary>
        /// 执行条件表达式
        /// </summary>
        /// <param name="args"></param>
        public new bool Execute(BpmContext context)
        {
            ZSequence sequence = context.Element as ZSequence;

            bool result = this.eParser.GetResult <bool>(sequence.Express);

            if (!exeExpress || (exeExpress && result))
            {
                Leave(context);
                return(true);
            }
            else
            {
                DestroyToken(context.Token);
                return(false);
            }
        }
예제 #2
0
        /// <summary>
        /// 分支顺序流的处理
        /// </summary>
        /// <param name="context"></param>
        public void SplitExecute(BpmContext context)
        {
            //获取网关所有输入连线
            List <ZSequence> lines     = fParser.FindOneSideLines(context.ProcessXml, context.Element.ID, true) as List <ZSequence>;
            bool             exeResult = false; //连线上表达式的执行结果

            foreach (ZSequence line in lines)
            {
                if (string.IsNullOrEmpty(line.Express))
                {
                    exeResult = eParser.GetResult <bool>(line.Express);
                    if (exeResult)
                    {
                        outSequence = line;
                        break;
                    }
                }
            }
        }