メインコンテンツまでスキップ

メッセージを取得する

シーケンス図からすべてのメッセージを取得する

すべてのメッセージを取得するにはISequenceDiagramオブジェクトのMessagesプロパティを用います。

public void GetMessages(ICommandContext c, ICommandParams p)
{
ISequenceDiagram sequenceDiagram = c.App.Workspace.CurrentEditor as ISequenceDiagram;
if (sequenceDiagram == null) return;

// メッセージを取得します
IMessageShapeCollection messages = sequenceDiagram.Messages;

var no = 1;
foreach (IMessageShape message in messages)
{
c.App.Output.WriteLine("sample", $"{no}つ目のメッセージ : {message.Text}");
no++;
}
}

特定のライフラインからの送信メッセージを取得する

特定のライフラインからの送信メッセージを取得する例です。

public void GetSendMessages(ICommandContext c, ICommandParams p)
{
ISequenceDiagram sequenceDiagram = c.App.Workspace.CurrentEditor as ISequenceDiagram;
if (sequenceDiagram == null) return;

// 選択されたライフラインが持つ実行仕様から送信メッセージを取得します
ILifelineShape lifeline = sequenceDiagram.GetSelectedShapes().FirstOrDefault() as ILifelineShape;
IMessageShapeCollection sendMessages = lifeline.ExecutionSpecifications.SelectMany(ec => ec.SendMessages);

c.App.Output.WriteLine("sample", $"ライフライン : {lifeline.Text} の送信メッセージ");

var no = 1;
foreach (IMessageShape sendMessage in sendMessages)
{
c.App.Output.WriteLine("sample", $" {no}つ目の送信メッセージ : {sendMessage.Text}");
no++;
}
}