public virtual IDev2Activity Execute(IDSFDataObject data)
        {
            try
            {
                var className = GetType().Name;
                Tracker.TrackEvent(TrackerEventGroup.ActivityExecution, className);

                ExecuteTool(data);
            }
            catch (Exception ex)
            {
                Dev2Logger.Log.Error("OnExecute", ex);
                var errorString   = ex.Message;
                var errorResultTO = new ErrorResultTO();
                errorResultTO.AddError(errorString);
            }
            finally
            {
                if (!_isExecuteAsync || _isOnDemandSimulation)
                {
                    DoErrorHandling(data);
                }
            }


            if (NextNodes != null && NextNodes.Count() > 0)
            {
                NextNodes.First().Execute(data);
                return(NextNodes.First());
            }
            return(null);
        }
 public override IDev2Activity Execute(IDSFDataObject data)
 {
     ExecuteTool(data);
     if (NextNodes != null && NextNodes.Count() > 0)
     {
         NextNodes.First().Execute(data);
         return(NextNodes.First());
     }
     return(null);
 }
예제 #3
0
        /// <summary>
        /// ノード全体を正規化し、変化の重複などをなくします。
        /// </summary>
        public void Regulalize(int moveCount = 0)
        {
            // 変化の重複を削除します。
            for (var i = 0; i < NextNodes.Count(); ++i)
            {
                for (var j = i + 1; j < NextNodes.Count();)
                {
                    var baseNode = NextNodes[i];
                    var compNode = NextNodes[j];

                    if (baseNode.Move == compNode.Move)
                    {
                        // もし同じ指し手の変化があれば、子の指し手をマージします。
                        // 子の重複チェックはこの後行うので、
                        // ここで重複があっても構いません。
                        compNode.NextNodes.ForEach(_ => _.ParentNode = null);
                        compNode.NextNodes.ForEach(_ => baseNode.AddNext(_));

                        NextNodes.RemoveAt(j);
                    }
                    else
                    {
                        ++j;
                    }
                }
            }

            // 手数の再設定
            MoveCount = moveCount;

            // 子ノードに関してもチェックを行います。
            foreach (var node in NextNodes)
            {
                node.Regulalize(moveCount + 1);
            }
        }
예제 #4
0
        /// <summary>
        /// ノード全体を文字列化します。
        /// </summary>
        private void MakeString(StringBuilder sb, int nmoves)
        {
            if (Move != null)
            {
                var str    = Move.ToString();
                var hanlen = str.HankakuLength();

                sb.AppendFormat(" - {0}{1}",
                                str, new string(' ', Math.Max(0, 14 - hanlen)));
            }

            if (NextNode != null)
            {
                NextNode.MakeString(sb, nmoves + 1);
            }

            for (var i = 1; i < NextNodes.Count(); ++i)
            {
                sb.AppendLine();
                sb.Append(new string(' ', 17 * nmoves));

                NextNodes[i].MakeString(sb, nmoves);
            }
        }