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); }
/// <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); } }
/// <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); } }