我想用我的java代码生成一个活动图。它的工作是创建一个actionelement:
//Add the actionElement to the package
Element actionElement = elements.AddNew("MyFirstAction", "Action");
elements.Refresh();
//Add the element to the activity diagram
DiagramObject dob = dobs.AddNew("", "");
dobs.Refresh();
//reference the DiagramObject to the before created element
dob.SetElementID(element.GetElementID());
dob.Update();
dobs.Refresh();
所以我认为它将以同样的方式为Initial(或EntryPoint)工作:
Element initElement = elements.AddNew("Start...","EntryPoint");
但是出现了以下异常:
java.lang.Exception: Invalid parent for EntryPoint (Package)
有人能帮帮我吗?我的另一个问题是,如果有任何枚举的元素类型的集合?因为我只找到了集合类的以下信息..
AddNew (string Name, string Type)
但是Type的信息只告诉我们"Type: String(最多30个字符长)"。
下面是一个指向集合类的链接:http://www.sparxsystems.com/enterprise_architect_user_guide/9.2/automation/collection.html
对
编辑
在Uffe的帮助下,我得到了一些活动图组件的子类型和类型信息。"原始名称"是当您想要添加"新元素或连接器"时在企业架构师的GUI中看到的名称:
- 原名称:"Action";类型:"行动";亚型:0;
- 原名称:"Activity";类型:"活动";亚型:0;
- 原名:"结构化活动"(Other->Simple Composite);类型:"活动";亚型:8;
- 原名:"Initial";类型:"StateNode";亚型:100;
- 原名称:"Final";类型:"StateNode";亚型:101;
- 原名称:"Flow Final";类型:"StateNode";亚型:102;
- 原名称:"Decision";类型:"决定";亚型:0;
- 原名称:"Merge";类型:"MergeNode";亚型:0;
- 原名称:"Decision";类型:"决定";亚型:0;
- 原名称:"Fork/Join"(水平);类型:"同步";亚型:0;
- 原名称:"Fork/Join"(垂直);类型:"同步";亚型:1,
- 原名称:"图解图例";类型:"文本";亚型:76;
- 原名:"Synch";类型:"StateNode";亚型:6;
他已经在回答中解释过了。首先使用类型参数创建Element,然后设置特定的子类型。在此之后不要忘记update()。
Element element = elements.AddNew("StartHere", "StateNode");
element.Subtype = 100;
element.Update();
elements.Refresh();
再次感谢Uffe提供的示例:)
没有元素类型枚举,只是将元素指定为字符串。有效的字符串在帮助文件中列出,特别是在Element
类的Type
属性中(自动化和脚本—企业架构师对象模型—参考—元素包—元素类)。
Element.Subtype
),它们中的大多数都没有被记录下来——但是活动图的初始活动恰好是少数几个被记录下来的活动之一。
因此,为了创建一个ActivityInitial元素(在GUI中众所周知),您只需创建指定类型的元素,然后设置它的子类型并更新它。
Element element = elements.AddNew("StartHere", "StateNode");
element.Subtype = 100;
element.Update();
elements.Refresh();
为了找出其他元素的正确类型/子类型组合,最简单的方法是在GUI中创建相应类型的元素,然后在数据库中查找:
select Object_Type, NType from t_object where Name = 'MyTestElement'