65.9K
CodeProject 正在变化。 阅读更多。
Home

NIEM 工具入门

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2009年3月24日

CPOL

13分钟阅读

viewsIcon

26074

对一些可用于处理NIEM的工具的评述。

关于本文

在我之前的文章《NIEM和IEPD介绍》中,我创建了一个IEPD浏览器来导航符合NIEM的模式。有各种在线工具可用于导航NIEM模型、构建模式子集和IEPD,以及将模式映射到UML中创建的逻辑模型。本文评述了www.niem.gov网站上提供的在线工具。

诚然,这不像您通常在CodeProject上看到的文章。我发表这篇文章的目的是向CodeProject介绍一些目前可用于处理NIEM的免费工具,以防有人需要处理这个模型。同时,还有很多机会可以进一步开发处理这个模型的工具,这正是我感兴趣的,也许读者也会对此感兴趣。了解现有工具对于更好地确定NIEM社区的需求至关重要,这也是本文的目的。

引言

虽然有可能只凭双手和创造力来构建东西,但工具箱里有几件工具总能让工作更轻松、更高效。处理国家信息交换模型(NIEM)也是如此。有许多工具可以帮助处理NIEM,其中许多都包含在www.niem.gov网站上。在本文中,我们将评述以下工具,并讨论它们的功能、必要性以及如何使用它们。

  • NIEM的搜索和导航(SSGT的一部分)
  • 使用模式子集生成工具(SSGT)构建模式子集
  • 映射信息交换
  • 处理IEPD
  • 生成代码列表模式
  • 迁移辅助

注意:请耐心看我列出的工具,因为它们没有朗朗上口的名字或简洁的标题。许多工具只是简单地根据其功能命名;这可以帮助立即识别它们的价值,但也会使文章的副标题显得笨拙。

NIEM的搜索和导航

点击此链接将带您到NIEM模式子集生成工具(SSGT)。稍后我将讨论模式子集生成工具;目前,我们只看搜索和导航功能。默认网页提供了基本的搜索功能,允许您按以下方式搜索:

  • 属性
  • 类型
  • 命名空间
  • 方面
  • 外部
  • 关联

最常见的搜索是“属性”(Property)和“类型”(Type)。高级搜索选项会弹出一个用户界面,您可以在其中指定高级选项,例如搜索精确短语、要匹配的内容以及要搜索的域。

在IEPD创建过程中,您很可能在某个时候会创建逻辑模型的UML图。一旦创建了逻辑模型,您就需要搜索NIEM以查找UML模型中语义等价的类型(类)和元素(属性),以便将它们映射到NIEM模式类型和元素。此外,您还会发现一些NIEM类型虽然不语义等价,但适合扩展或替换您在交换中需要的自定义类型(放入扩展模式中)。

例如,要查找NIEM是否包含“Citation”类型,我们可以将“搜索内容”更改为“类型”,在搜索框中输入“Citation”,然后单击“搜索”按钮。这将产生一个结果:“j:CitationType”。

此时,我们可以通过单击“添加”(Add)按钮左侧的加号来钻取CitationType的元素。您可以通过导航到层次结构进一步钻取子元素,依此类推。同样,要查看j:CitationType继承了什么类型,您可以单击“显示继承”(show inheritance)文本,这将显示j:CitationType继承自nc:ActivityType。最后,每个元素旁边都有“详细信息”(details)文本;单击此文本,将显示该元素的定义。这对于检查NIEM类型是否与交换中所需的类型在语义上等价非常有价值。

使用模式子集生成工具(SSGT)构建模式子集

SSGT允许您选择NIEM组件的一个子集包含在您的交换中。您的交换永远不需要NIEM中定义的所有类型——相反,您的交换将包含组件的一个子集,这些组件要么具有直接的语义等价性,要么将在您的交换中包含的扩展模式中进行扩展。通过选择NIEM组件的一个子集,您可以减小交换的大小并提高解析/验证性能。SSGT用于构建此子集,然后可以通过“生成文档”(Generate Documents)链接下载。添加到子模式中的每个组件都将放置在与该组件选择的命名空间相对应的模式文件中。例如,如果我们向子模式添加j:CitationType,那么j:CitationType将在jxdm域文件夹中找到,而j:CitationType派生(或继承)的nc:ActivityType将在niem-core文件夹中找到。

在搜索并找到NIEM中所需的组件后,有几种选项可以将组件添加到我们的子模式中。例如,搜索类型“Citation”可以找到“j:CitationType”。现在,我们可以通过单击“j:CitationType”左侧的“添加”(Add)按钮来仅添加该类型而不添加任何元素。这只会添加类型,而不添加任何元素。

您不太可能不想要包含该类型的任何元素;但是,您可以稍后返回添加所有元素,SSGT会正确地将它们包含在CitationType下。或者,您可以单击“添加全部”(Add All)文本左侧的“添加”(Add)按钮,将该类型的所有元素都添加进来。

请注意,这不会添加子元素。例如,j:CitationIssuedLocation下的元素不会被添加,因此如果您想要与引证签发地点相关的特定元素(如nc:LocationAddress),您需要展开j:CitationIssuedLocation并添加所需的子元素。这是一种“自顶向下”生成子模式的方法。

相反,如果您更喜欢“自底向上”的方法,您可以钻取类型并从底部开始添加类型。例如,您可以钻取j:CitationType/j:CitationIssuedLocation,首先添加nc:LocationAddress,然后通过添加j:CitationIssuedLocation向上工作。

因为j:CitationIssuedLocationj:CitationType的元素,所以j:CitationType会自动添加到子模式中。

而添加nc:LocationAddress时,j:CitationIssuedLocation并不会自动添加。

这是因为包含元素nc:LocationAddress的类型是nc:AddressType,而包含元素j:CitationIssuedLocation的类型是j:CitationType。在生成子模式时,始终包含包含类型。

添加元素时,您可以立即指定基数(cardinality),方法是单击“添加”(Add)按钮旁边的向下箭头。

这将提供一个基数选项列表,并生成相应的“minOccurs”和“maxOccurs”属性。所需的基数通常由您的模型决定,并且应记录在您用作NIEM映射参考的UML模型中。但是,您可以稍后选择基数。一旦创建了子模式,您就可以单击“编辑基数”(Edit Cardinality)链接来定义所有元素的基数。

您还可以通过单击类型/元素左侧的复选框,然后单击“删除”(Delete)按钮来删除类型和元素。

创建大型子模式可能无法一次完成,也可能需要多人协作。SSGT允许您将模式子集保存为“愿望清单”(wantlist),让您可以(或其他人)稍后回来继续工作。

“将当前愿望清单保存到文件”可以在“生成文档”页面上找到。之后,您可以在SSGT主页的“选项”(Options)链接中加载您的愿望清单,在那里您会找到“加载愿望清单”(Load Wantlist)部分。

映射信息交换

映射工具可帮助您创建交换和扩展模式,并将您的UML模型与NIEM进行映射。它还将生成您的交换的子模式。要使用此工具,您需要使用ArgoUML或Eclipse等工具生成XMI表示的UML 1.4或UML 2.1元模型。

上传XMI模型后,您可以使用此工具将UML中的类和属性映射到NIEM。

虽然此工具提供了NIEM搜索功能,但它不如SSGT的导航和搜索功能强大,因此您可能希望将SSGT单独打开一个选项卡或窗口。当您使用映射工具找到类型或元素时,您可以选择使用此工具,在主网页上创建一个交换,然后上传一个或多个XMI模型。然后,您可以单击XMI模型链接开始映射。

类及其派生类在导航树中显示为顶级项目。例如,如果您加载Citation UML的XMI,导航树将显示“DocumentType”和“CitationBatch”,并且都可以展开以显示它们的属性。作为UML模型一部分的类(通过关联)不直接表示;相反,可以通过导航UML模型中描述的关联来映射这些关联类的属性。因此,标记您的关联(有些UML建模者允许未命名的关联)很重要,因为关联名称将出现在映射工具的导航树中。

如果关联名称丢失,则映射工具将显示关联的类名。因此,在使用映射工具时,请记住它是以关联为中心的。而SSGT将明确显示包含类型(例如,添加j:CitationType会自动引入nc:ActivityType),映射工具不会明确向您显示这一点。但是,它的行为与SSGT相同,所以当您将Citation映射到j:Citation时,niem-core子模式也将包含nc:ActivityType。这揭示了映射工具和SSGT之间的另一个区别——使用映射工具时,您是将属性映射到元素。

一旦您映射了UML类和属性,您就可以通过单击文本“here”来生成子模式、扩展模式和交换模式:“To generate and download a mapping report, click here.”这将带您到一个页面,在该页面的底部附近,您可以单击“生成交换模式”(generate an exchange schema)文本。从这个页面,您还可以创建映射报告、映射集、愿望清单、子模式和约束模式。

处理IEPD

使用此工具,您可以上传或输入IEPD所需的模式和文档。连同元数据一起,该工具将所有内容打包成符合NIEM IEPD规范的包。使用此工具,您还可以验证NIEM兼容IEPD是否包含最低限度的工件和元数据。您可以同时处理几个不同完成阶段的IEPD。一旦IEPD创建完成,您就可以使IEPD或IEPD的部分内容公开访问。您也可以下载其他人共享的IEPD。

首先需要登录,因为IEPD是特定于您的帐户的。登录后,您可以通过上传IEPD zip文件或使用该工具创建新的IEPD。创建新的IEPD时,系统会要求您指定根目录名称,并能够为该IEPD上传各种工件。

工件列表相当广泛,包括业务需求和规则、约束、子集、扩展和交换模式、各种文档类型等工件类型。

在指定了工件(不必是完整列表)之后,系统会要求您输入有关IEPD的一些基本信息。

最后一步提供了一个选项,让您验证IEPD和/或上传IEPD工件。验证并不验证工件——相反,它验证元数据中的信息,例如版本、URI、域、授权源联系人等。您可以通过单击“编辑”(Edit)链接,然后选择以下选项之一来随时添加或编辑工件:编辑元数据和工件(Edit Metadata and Artifacts)、编辑可见性/共享(Edit Visibility/Sharing)或删除IEPD(Deleting the IEPD)。

您也可以下载IEPD。这包括您所有的工件;此外,下载内容还包括文件“metadata.xml”,该文件描述了您在工具网页上输入的元数据,以及一个catalog.html文件。目录文件可以在您的网络浏览器中查看,并提供指向各种工件的链接。大多数浏览器都支持直接在浏览器中查看XML/XSD文件。(请注意,Google Chrome只显示注释——它似乎会剥离XSD和XML文件中的XML标签。)

如果愿意,您可以通过将IEPD注册到IEPD Clearinghouse来使其公开可用。您还可以通过单击工具网页的“处理IEPD”(work with IEPDs)部分中的“搜索”(Search)链接来搜索公开的IEPD。

生成代码列表模式

此工具根据Excel电子表格生成代码列表(如眼睛颜色、发型等)。代码列表通常用作泛化文本输入的替代组,并表示特定元素的有效选项的下拉列表。要创建自己的代码列表,请下载模板zip文件。解压并打开XLS文档后,请注意有两个包含示例代码列表的选项卡。您可以根据需要替换/删除/添加新选项卡。(该工具支持选项卡的好处是,您可以在单个电子表格中管理所有代码列表。)

当您准备好生成代码列表时,填写工具页面上显示的相应信息,然后单击“构建模式”(Build Schema)按钮(在我的浏览器中,“Schema”一词被截断了)。代码列表模式生成后,您的浏览器将打开一个窗口以在本地保存文件。这包括您的代码列表模式、上传的XLS文件以及支持代码列表的必要NIEM工件,例如结构模式。

迁移辅助

迁移辅助工具可以将GJXDM 3.0.3愿望清单转换为NIEM 2.0愿望清单,或者将NIEM 1.0愿望清单转换为NIEM 2.0愿望清单。生成的输出将是NIEM 2.0愿望清单、NIEM 2.0子模式和迁移报告。迁移报告包含迁移愿望清单时采取的行动和选择、无法自动解决的问题以及表明迁移解决程度的统计数据。此工具无法迁移扩展或约束模式。

要使用此工具,请指定GJXDM 3.0.3或NIEM 1.0愿望清单文件和愿望清单版本,然后单击“迁移”(Migrate)按钮。然后可以将生成的文档本地保存以供您审查。

结论

在创建IEPD时,搜索和导航工具在将逻辑模型映射到NIEM时是必不可少的。大多数IEPD通常会有特定于域的代码列表——使用代码列表生成器工具创建这些代码列表只需编辑Excel电子表格即可生成代码列表工件。映射工具本身在创建IEPD所需的子集、扩展和交换工件方面非常有用。这些工件, supplemented with other artifacts(例如文档、示例和元数据)使用“处理IEPD”(Work with IEPDs)工具,提供了用于管理和发布IEPD的综合工具。

链接

© . All rights reserved.