前页 | 后页 |
模型验证示例
此示例代码使用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));
}
}
}