掲示板一覧   -   トピック一覧
   EA API
     APIでSysML内部ブロック図の情報フローを取得できない


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
umesan
投稿日時: 2019-4-4 14:32
EA Administrator
投稿: 1185
APIでSysML内部ブロック図の情報フローを取得できない
サポート宛にいただきましたご指摘の要約です。

○ご指摘
●問題
APIで、内部ブロック図の「情報フローの実現」で実現した情報フローを取得できない

●再現方法
1. 「情報フローの実現」を含む内部ブロック図を作る。
  任意の内部ブロック図で、任意のコネクタを右クリック→「追加設定」→「情報フローの実現」を押す。
  情報アイテムを指定する(適当なブロックやバリュー型を作って指定)。

2. ダイアグラムグループのスクリプトに下記のようなコードを書く。

'現在のダイアグラム上で選択された接続を取得
dim currentDiagram as EA.Diagram
set currentDiagram = Repository.GetCurrentDiagram()
set selectedConnector = currentDiagram.SelectedConnector

'接続に運ばれている情報の数を確認
Session.Prompt selectedConnector.ConveyedItems.Count, promptOK

3. 1の図上でコネクタを選択し、2を実行する。
 期待値:1が表示される
 実際:0が表示される

●補足
クラス図で描いた情報フローでは、上記APIが期待通り機能しました(ConveyedItems.Count=1)。


〇回答
この度はお手数をおかけしており申し訳ございません。

まず、情報フローの接続そのものと、「情報フローの実現」で作成した接続は、同じ接続ではありません。以下URLのヘルプでは、わかりにくいかもしれませんが、「情報フローの実現」で作成した接続は、ダイアグラム上は、一つの接続として表現されておりますが、モデルとしては、運ばれている要素を持った「情報フロー」と「関連」の接続の2つの接続であります。(ヘルプにもありますように、情報フローが複数の場合もあります。)

◇情報フローの実現
https://www.sparxsystems.jp/help/14.0/informationitemsrealized.html


そして、現在のEAのAPIで、Diagram の SelectedConnector で取得できるのは、このうちの、「関連」の接続となります。(ですので、運ばれている要素がありません。)

誠に申し訳ございませんが、「関連」の接続と「情報フロー」の接続を結び付けている情報は存在しているのですが、下記URLの掲示板で書かせていただいておりますように、現在のEAではAPIで取得できません。

◇SysMLのアイテムフローの仕様について
https://www.sparxsystems.jp/forum/modules/xhnewbb/viewtopic.php?topic_id=6486

◇APIでSysMLのアイテムフローを追加する方法を知りたい
https://www.sparxsystems.jp/forum/modules/xhnewbb/viewtopic.php?topic_id=6543


お手数をおかけいたしますが、現時点では、SelectedConnector のソース要素とターゲット要素が同一の、種類がInformationFlowのConnector を取得することで、回避いただけますようお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ