掲示板一覧   -   トピック一覧
   EA API
     ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2009-4-4 10:42

ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。


VisualBasic 2005 で、ステートマシン図を生成するアドインを作成しています。

State1とState2(ともにElement)を追加して、両者を"遷移"Connectorでつないだあと
EAから接続のプロパティを見ると「定義済みのトリガ」という欄がありますが、
その欄に同じPackage内のElement(Type="Trigger")を追加する方法がわからず困っています。
アドインからこの参照を追加することは可能でしょうか?

sugimoto
投稿日時: 2009-4-6 10:04
EA Administrator
投稿: 1895

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

現在、どのビルド番号をご利用でしょうか?

最新版EA7.5 ビルド843の遷移のプロパティ画面には、
「定義済みのトリガ」という欄はございません。

最新版の「トリガ」欄への設定として、回答させていただきます。

現状のヘルプを確認しましたが、トリガを設定するAPIの用意がございません。
そのため、SQL文にて情報を書き込んでいただく必要がございます。

この内容詳細は、「ステートマシン図の遷移に関するAPI」に記載がありますので、ご確認下さい。

また、以下の情報も更新してください。
t_connectorのPDATA1:トリガ名を設定

この点につきましては、APIで対応するよう引き続き、開発元に改善を依頼します。

ご確認のほど、よろしくお願いいたします。
未登録ゲスト
投稿日時: 2009-4-9 10:40

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

回答ありがとうございます。
使用しているEAのバージョンは以下になります。

  バージョン: 7.0.818 (ビルド:818) - Unicode

教えていただいた方法を試してみたのですが、SQL文をいうものを書いたことがなく、どうもうまくいきません..orz

ステートマシン図の遷移にトリガを追加する際の

  Repository.Execute()

の簡単なサンプルコードを提示していただけないでしょうか?

EAのアドインAPIからは外れた質問で恐縮ですが
どうぞよろしくお願いします。
sugimoto
投稿日時: 2009-4-9 10:58
EA Administrator
投稿: 1895

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

以下のような例で参考になりますでしょうか?

string sql = "UPDATE t_xref SET Description =" + triggerGUID + " WHERE Client=" + elementGUID + ";";
Repository.Execute(sql);
未登録ゲスト
投稿日時: 2009-4-20 21:26

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

レスポンスが悪くて申し訳ありません。
教えていただいたサンプルを参考にいろいろ試しているのですが、まだうまくいっていません。。

このようなコードを書いてみたのですが、、

Dim state1 As EA.Element = package.Elements.AddNew("state1", "State")
state1.Update()
Dim state2 As EA.Element = package.Elements.AddNew("state2", "State")
state2.Update()
Dim trigger As EA.Element = package.Elements.AddNew("trigger", "Trigger")
trigger.Update()
package.Elements.Refresh()
Dim transition As EA.Connector = state1.Connectors.AddNew("", "StateFlow")
transition.SupplierID = state2.ElementID
transition.Update()
state1.Connectors.Refresh()

Dim query As String = "UPDATE t_xref SET Description = " & trigger.ElementGUID.ToString() & " WHERE Client = " & transition.ConnectorGUID.ToString() & ";"
Me.m_rep.Execute(query)

Execute()を呼んだタイミングで

DAO.Database [3075]
クエリー式'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX}'の
GUIDの指定が不正です。

と書かれたダイアログが表示されてしまいます。

どこがおかしいのでしょうか。。。
お忙しいところ申し訳ないですがどうぞよろしくお願いします。
sugimoto
投稿日時: 2009-4-21 11:04
EA Administrator
投稿: 1895

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

遷移にトリガを設定したタイミングで、t_xref に情報が追加されますので、
上記内容ですとまだ存在しない情報に対してUPDATEしているため、
エラーが発生していることが考えられます。

t_xrefテーブルに情報を追加することが必要です。

ご確認のほど、よろしくお願いいたします。

[2009/4/22追記]
SQL文のサンプルです。
先日のサンプルでは、すでに要素などの情報があることを前提にしていました。
今回のように要素などを新規作成される場合は、以下のような情報追加・
設定が必要になります。参考になりましたら幸いです。

1.t_connector
string query = "update t_connector SET PDATA1='" + trigger.Name + "' where ea_guid='" + transition.ConnectorGUID + "';";
Repository.Execute(query);

2.t_xref
string query = "INSERT INTO t_xref (XrefID,Name,Type,Visibility,Behavior,Description,Client)" + " VALUES (" + guid +",'MOFProps', 'connector property','Public','trigger'," + trigger.ElementGUID + "," + transition.ConnectorGUID + ")" + ";";
Repository.Execute(query);
未登録ゲスト
投稿日時: 2009-4-23 10:57

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

サンプルありがとうございます。
非常に助かります。

早速使ってみたのですが、
"2.t_xref"のコードで「・・・ + " VALUES (" + guid +",'MOFProps'・・・」とありますが、こちらの guid を新規に生成する必要があると思い
"{" + Guid.NewGuid().ToString() + "}"
としたところ、やはり
「クエリー式'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX}'の
GUIDの指定が不正です。」
というダイアログが出てしまいます。
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXの値は NewGuid()で生成した値になっています。

新規に指定するguidに何か制約等ありますでしょうか?

何度も申し訳ないですが、
どうぞよろしくお願いします。
sugimoto
投稿日時: 2009-4-23 11:06
EA Administrator
投稿: 1895

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

サンプルのguidの箇所で詳細を記載していませんでしたが、
おそらくguidを「'」で囲むとエラーはでなくなると思います。

この点につきましては、環境により相違がある場合があるようです。

ご確認のほど、よろしくお願いいたします。
未登録ゲスト
投稿日時: 2009-4-23 13:36

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

DUID を ' で囲むようにしたところ、
エラーダイアログも出なくなりtriggerとtransitionがひも付けできるようになりました!

これで当初の目的は果たせました。

長々とありがとうございました。 m(_ _)m
sugimoto
投稿日時: 2009-4-23 13:40
EA Administrator
投稿: 1895

Re: ステートマシン図で"StateFlow"Connectorと"Trigger"Elementをひも付けしたい。

無事ひも付けができるようになり安心いたしました。

このたびはお手数をお掛けし、申し訳ございませんでした。

triggerとtransitionのひも付けは、APIで対応できるように
改善を依頼しておりますが、それまでは現在の方法での
ご対応をお願いいたします。

今後ともよろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ