掲示板一覧   -   トピック一覧
   EA API
     API経由でTemplateParameterが正しく削除されない


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
umesan
投稿日時: 2019-4-4 14:16
EA Administrator
投稿: 1502

API経由でTemplateParameterが正しく削除されない

サポート宛にいただきましたご指摘の要約です。

○ご指摘
[現象]
APIから、クラス要素に、同名のTemplate Parameterの追加・削除を繰り返すと、2回目以降の追加に失敗する。(「指定された名前のパラメータが既に存在します。」と表示される)

[再現ソースコード]
var element = package.Elements.AddNew("TemplateTest", "Class") as EA.Element; element.Update();
package.Elements.Refresh();

/* 1. Append Template Parameters */
var param1 = element.TemplateParameters.AddNew("T", "String") as EA.TemplateParameter;
param1.Update();
element.TemplateParameters.Refresh();
element.Update();

/* 2. Remove All Template Parameters */
for(var i = 0; i < element.TemplateParameters.Count; i++) {
    element.TemplateParameters.Delete((short)i);
}
element.TemplateParameters.Refresh();
element.Update();

/* 3. Append Same Template Parameters */
var param2 = element.TemplateParameters.AddNew("T", "String") as EA.TemplateParameter;
param2.Update();  ← ★
element.TemplateParameters.Refresh();
element.Update();


★の箇所でエラーメッセージが表示されTemplate Parameterに何も追加されていない状態になります。

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

頂きました現象につきまして、弊社環境でも再現させることができました。
下記URLのTemplateParameterのAPIと同様もしくは同じ原因と推測され、EA本体のバグと推測いたします。開発元に連絡するように致します。

◇API経由でTemplate Parameter追加時に「制約」・「既定値」が設定できない
https://www.sparxsystems.jp/forum/modules/xhnewbb/viewtopic.php?topic_id=6579

さまざま調査いたしましたところ、修正されると不要なコードとなってしまいますが、
「/* 3. Append Same Template Parameters */」の前において、element = Repository.GetElementByID(element.ElementID); などで該当要素を再取得することで、回避可能でした。

上記で、回避頂けますようお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ