2017-02-09 25 views
2

EAのシェイプスクリプトを使用して標準コネクタにカスタム追加を定義しています。私は、コネクタのソース側に円を追加し、タグ付きの値でインラインで塗りつぶしたいと思います。私はまた、コネクタのステレオタイプラベルを隠します。私はこれらのすべてを行うことができます(下記のシェイプスクリプトを参照してください)。エンタープライズアーキテクトシェイプスクリプト - コネクタの矢印が消える

このフォーマットとタグ付きの値との関係を作成できるMDGテクノロジを作成しました。

問題は、これらのリレーションシップにデフォルトのターゲットエンドがないことです。行はデフォルトのままで、ソースの円は必要に応じて設定され、タグ付きの値に従ってフォーマットされますが、ターゲットの終了矢印は消えます。

shape source { //draw circle at source end of line 
    if(HasTag("Confidence","Remote or Highly Unlikely")) { 
     SetPen(255,0,0,1); 
     Print("1"); 
    } else if(HasTag("Confidence","Improbable or Unlikely")) { 
     SetPen(255,0,0,1); 
     SetFillColor(255,0,0); 
     Print("2"); 
    } else if(HasTag("Confidence","Realistic Possibility")) { 
     SetPen(255,191,0,1); 
     Print("3"); 
    } else if(HasTag("Confidence","Probable or Likely")) { 
     SetPen(255,191,0,1); 
     SetFillColor(255,191,0); 
     Print("4"); 
    } else if(HasTag("Confidence","Highly/Very Probable/Likely")) { 
     SetPen(0,255,0,1); 
     Print("5"); 
    } else if(HasTag("Confidence","Almost Certain")) { 
     SetPen(0,255,0,1); 
     SetFillColor(0,255,0); 
     Print("6"); 
    } 
    StartPath(); 
    Ellipse(0,-3,6,3); 
    EndPath(); 
    FillAndStrokePath(); 
} 

shape MiddleBottomLabel { //hide <<stereotype>> label 
} 

私は変更せずに

shape target { 
} 

shape target { 
    DrawNativeShape(); 
} 

を追加しようとしています。

+1

明らかにバグのような臭いです(ここでも試しました)。 http://sparxsystems.com/support/forms/bug_report.htmlに報告してください。 –

+0

バグ報告を提出していただきありがとうございます。私の回避策は、次のように手動で正しいコネクタを描くことです。 – WorkingMatt

+0

if(HasProperty( "type"、 "Aggregation")){ \t \t MoveTo(0,0); \t \t LineTo(8,4); \t \t LineTo(16,0); \t \t LineTo(8、-4); \t \t MoveTo(0,0); \t} else if(HasProperty( "type"、 "Association")){ – WorkingMatt

答えて

1

Sparxは、Enterprise Architectの今後のリリースで修正されるバグであることを確認しました(問題ID:17025526)。回避策は、以下のようにターゲット形状を再描画することです。 Compositionのターゲット形状を埋めることができなかったという別のバグがあるかもしれません。私はポリゴンを塗りつぶし、形状を埋めるためにいくつかの線を描くことを含むいくつかの方法を試しました。

shape target { //redraw targets 
    if(HasProperty("type","Aggregation")) { 
     MoveTo(0,0); 
     LineTo(8,4); 
     LineTo(16,0); 
     LineTo(8,-4); 
     LineTo(0,0); 
    } else if(HasProperty("type","Composition")) { 
     Polygon(-4,0,4,4,45); 
    } else if(HasProperty("type","Connector")) { 
     print("C"); 
    } else if(HasProperty("type","ControlFlow")) { 
     MoveTo(0,0); 
     LineTo(8,4); 
     MoveTo(0,0); 
     LineTo(8,-4); 
    } else if(HasProperty("type","Dependency")) { 
     MoveTo(0,0); 
     LineTo(8,4); 
     MoveTo(0,0); 
     LineTo(8,-4); 
    } else if(HasProperty("type","Extension")) { 
     MoveTo(0,0); 
     LineTo(8,4); 
     MoveTo(0,0); 
     LineTo(8,-4); 
    } else if(HasProperty("type","Realization")) { 
     MoveTo(0,0); 
     LineTo(8,4); 
     LineTo(8,-4); 
     LineTo(0,0); 
    } else if(HasProperty("type","CommunicationPath")){ 
     MoveTo(0,0); 
     LineTo(8,4); 
     MoveTo(0,0); 
     LineTo(8,-4); 
    } else if(HasProperty("type","InformationFlow")){ 
     MoveTo(0,0); 
     LineTo(8,4); 
     MoveTo(0,0); 
     LineTo(8,-4); 
    } else if(HasProperty("type","Generalization")){ 
     MoveTo(0,0); 
     LineTo(8,4); 
     LineTo(8,-4); 
     LineTo(0,0); 
    }  
} 
+0

strokeAndFillも機能しないことを確認しました。それを別のバグとして報告してください(すばらしい惑星Sparxへようこそ)。興味深いことに(!)ヘルプでは、動作しないhttp://sparxsystems.com/enterprise_architect_user_guide/12.1/building_models/add_custom_compartments_to_ele.htmlに 'if(HasProperty(" Connector.Type "、" Realization "))'を使用しています。ちょうど別のEA(docu)バグ。 –

+0

バグレポートが送信されました。興味がありがとう@ThomasKilian – WorkingMatt

+0

私は、上記のコードがコンポジションにポリゴンを描画しない理由を知りました。背後にはコンポジションタイプがありません。実際には、サブタイプが「Strong」の「集約」です。 if(HasProperty( "type"、 "Composition")が決して真ではないため、ポリゴンは描画されません)ブロック内にif(HasProperty( "subtype"、 "Strong")を追加するのが適切です。 – WorkingMatt

関連する問題