预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

模型验证示例

此示例代码使用C#编写,提供了骨架模型验证实现,您可能希望以此为起点来编写自己的模型验证规则。

Main.cs

使用系统;

命名空间myAddin

{

公共班级

{

公共规则规则;

公共Main()

{

theRules = new Rules();

}

公共字符串EA_Connect(EA.Repository存储库)

{

返回“”;

}

公共无效EA_Disconnect()

{

GC.Collect();

GC.WaitForPendingFinalizers();

}

私人布尔IsProjectOpen(EA.Repository存储库)

{

尝试

{

EA.Collection c = Repository.Models;

返回true;

}

抓住

{

返回false;

}

}

公共对象EA_GetMenuItems(EA.Repository存储库,字符串MenuLocation,字符串MenuName)

{

开关(MenuName)

{

案件 ””:

返回“-&myAddin”;

案例“-&myAddin”:

string()ar = {“&Test”};

返回ar

}

返回“”;

}

public void EA_GetMenuState(EA.Repository存储库,字符串MenuLocation,字符串MenuName,

字符串ItemName,ref bool IsEnabled,ref bool IsChecked)

{

//如果没有打开的项目,请禁用所有菜单选项

如果(IsProjectOpen(Repository))

IsEnabled = true;

其他

IsEnabled =假;

}

public void EA_MenuClick(EA.Repository存储库,字符串MenuLocation,字符串MenuName,字符串ItemName)

{

开关(ItemName)

{

案例“&Test”;

DoTest(存储库);

打破;

}

}

公共无效EA_OnInitializeUserRules(EA.Repository存储库)

{

如果(存储库!= null)

{

theRules.ConfigureCategories(Repository);

theRules.ConfigureRules(存储库);

}

}

公共无效EA_OnRunElementRule(EA.Repository存储库,字符串RuleID,EA.Element元素)

{

theRules.RunElementRule(资源库,RuleID,元素);

}

public void EA_OnRunDiagramRule(EA.Repository存储库,字符串RuleID,长lDiagramID)

{

theRules.RunDiagramRule(Repository,RuleID,lDiagramID);

}

public void EA_OnRunConnectorRule(EA.Repository存储库,字符串RuleID,长lConnectorID)

{

theRules.RunConnectorRule(Repository,RuleID,lConnectorID);

}

public void EA_OnRunAttributeRule(EA.Repository存储库,字符串RuleID,字符串AttGUID,长lObjectID)

{

返回;

}

公共无效EA_OnDeleteTechnology(EA.Repository信息库,EA.EventProperties信息)

{

返回;

}

无效的EA_OnImportTechnology(EA.Repository存储库,EA.EventProperties信息)

{

返回;

}

私人无效DoTest(EA.Repository Rep)

{

// TODO:在此处插入测试代码

}

}

}

Rules.cs

使用系统;

使用System.Collections;

命名空间myAddin

{

公开课规则

{

私有字符串m_sCategoryID;

私有System.Collections.ArrayList m_RuleIDs;

私有System.Collections.ArrayList m_RuleIDEx;

私有常量字符串cRule01 =“ Rule01”;

私有常量字符串cRule02 =“ Rule02”;

私有常量字符串cRule03 =“ Rule03”;

// TODO:根据需要扩展此列表

公共规则

{

m_RuleIDs = new System.Collections.ArrayList();

m_RuleIDEx = new System.Collections.ArrayList();

}

私有字符串LookupMap(string sKey)

{

返回DoLookupMap(sKey,m_RuleIDs,m_RuleIDEx);

}

私有字符串LookupMapEx(string sRule)

{

返回DoLookupMap(sRule,m_RuleIDEx,m_RuleIDs);

}

私有字符串DoLookupMap(string sKey,ArrayList arrValues,ArrayList arrKeys)

{

如果(arrKeys.Contains(sKey))

返回arrValues(arrKeys.IndexOf(sKey))。ToString();

其他

返回“”;

}

私人无效AddToMap(字符串sRuleID,字符串sKey)

{

m_RuleIDs.Add(sRuleID);

m_RuleIDEx.Add(sKey);

}

私有字符串GetRuleStr(string sRuleID)

{

开关(sRuleID)

{

案例cRule01:

返回“错误消息01”;

案例cRule02:

返回“错误消息02”;

案例cRule03:

返回“错误消息03”;

// TODO:根据需要添加其他案例

}

返回“”;

}

公共无效ConfigureConfigure(EA.Repository存储库)

{

EA.Project项目= Repository.GetProjectInterface();

m_sCategoryID = Project.DefineRuleCategory(“企业协作架构(ECA)规则”);

}

公共无效ConfigureRules(EA.Repository存储库)

{

EA.Project项目= Repository.GetProjectInterface();

AddToMap(Project.DefineRule(m_sCategoryID,EA.EnumMVErrorType.mvError,GetRuleStr(cRule01)),cRule01);

AddToMap(Project.DefineRule(m_sCategoryID,EA.EnumMVErrorType.mvError,GetRuleStr(cRule02)),cRule02);

AddToMap(Project.DefineRule(m_sCategoryID,EA.EnumMVErrorType.mvError,GetRuleStr(cRule03)),cRule03);

// TODO:展开此列表

}

public void RunConnectorRule(EA.Repository存储库,字符串sRuleID,长lConnectorID)

{

EA.Connector连接器= Repository.GetConnectorByID((int)lConnectorID);

如果(Connector!= null)

{

开关(LookupMapEx(sRuleID))

{

案例cRule02:

// TODO:执行规则2检查

打破;

// TODO:添加更多案例

}

}

}

public void RunDiagramRule(EA.Repository存储库,字符串sRuleID,长lDiagramID)

{

EA.Diagram图= Repository.GetDiagramByID((int)lDiagramID);

如果(图!=空)

{

开关(LookupMapEx(sRuleID))

{

案例cRule03:

// TODO:执行规则3检查

打破;

// TODO:添加更多案例

}

}

}

公共无效RunElementRule(EA.Repository存储库,字符串sRuleID,EA.Element元素)

{

if(元素!= null)

{

开关(LookupMapEx(sRuleID))

{

案例cRule01:

DoRule01(Repository,Element);

打破;

// TODO:添加更多案例

}

}

}

私有void DoRule01(EA.Repository存储库,EA.Element元素)

{

如果(Element.Stereotype!=“ myStereotype”)

返回;

// TODO:此处的验证逻辑

//报告验证错误

EA.Project项目= Repository.GetProjectInterface();

Project.PublishResult(LookupMap(cRule01),EA.EnumMVErrorType.mvError,GetRuleStr(cRule01));

}

}

}