Archimate-PlantUML
用于轻松创建Archimate图的PlantUML宏和包含文件。
目录
背景
PlantUML
PlantUML是一个开源项目,允许您使用简单的文本语言创建UML图。它使用Graphviz进行图表布局,生成PNG、SVG或LaTeX格式的图像。
ArchiMate
ArchiMate是一种企业架构建模语言,支持跨业务领域的架构描述、分析和可视化。
ArchiMate提供了一种通用语言,用于描述业务流程、组织结构、信息流、IT系统和技术基础设施的构建和运作。这就像传统建筑中的建筑图纸,描述了建筑物的各个方面的构造和使用。这种洞察力有助于不同的利益相关者设计、评估和沟通这些业务领域内部和之间的决策和变更的后果。
Archimate-PlantUML结合了PlantUML和ArchiMate的优点,提供了一种简单的方法来创建和管理ArchiMate图。Archimate-PlantUML是一组在PlantUML Archimate规范基础上编写的宏和其他包含文件,旨在简化创建元素和定义关系的语法。
入门
在您的.puml或.wsd文件中包含Archimate.puml
文件:
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
对于离线使用,下载文件并在本地引用它们:
!include path/to/Archimate.puml
使用方法
在包含Archimate.puml
后,您可以使用为ArchiMate元素定义的宏。
ArchiMate元素
ArchiMate元素按以下模式定义:
Category_ElementName(nameOfTheElement, "description")
或
Category_ElementName(nameOfTheElement, "description", true) //启用元素嵌套
例如:
- 要定义一个属于
Motivation
类别的Stakeholder
元素,语法如下:
输出:Motivation_Stakeholder(StakeholderElement, "利益相关者描述")
- 要定义一个
Business Service
元素:
输出:Business_Service(BService, "业务服务", true) { Application_Service("AppService01", "应用服务01") Application_Service("AppService02", "应用服务02") Application_Service("AppService03", "应用服务03") }
ArchiMate关系
ArchiMate关系按以下模式定义:
Rel_RelationType(fromElement, toElement, "description")
要定义两个元素的方向/方位:
Rel_RelationType_Direction(fromElement, toElement, "description")
支持的RelationTypes
有:
- Access
- Aggregation
- Assignment
- Association
- Composition
- Flow
- Influence
- Realization
- Serving
- Specialization
- Triggering
支持的Directions
有:
- Up
- Down
- Left
- Right
例如:
- 要表示上面定义的Stakeholder和Business Service之间的
composition
关系,语法如下:
输出:Rel_Composition(StakeholderElement, BService, "关系描述")
- 要将两个元素排列成上下位置,语法如下:
输出:Rel_Composition_Down(StakeholderElement, BService, "关系描述")
ArchiMate分组
ArchiMate中的分组使用以下语法表示:
Grouping(nameOfTheGroup, "分组描述"){
//定义ArchiMate元素
}
以及:
Group(nameOfTheGroup, "分组描述"){
//定义ArchiMate元素
}
例如
-
分组类型1:
Grouping(Example01, "分组类型01"){ Motivation_Stakeholder(StakeholderElement, "利益相关者描述") Business_Service(BService, "业务服务") }
输出:
-
分组类型2:
Group(Example01, "分组类型01"){ Motivation_Stakeholder(StakeholderElement, "利益相关者描述") Business_Service(BService, "业务服务") }
输出:
组件嵌套
嵌套允许层次化地组织组件,提高图表的清晰度。嵌套的层级数量没有限制。 实现允许在任何其他组件内嵌套任何组件。在嵌套时,元素将显示为一个矩形,右上角有archimate原型。
嵌套可以按以下模式启用:
Category_ElementName(nameOfTheElement, "description", true) {
Category_ElementName(uniqueName, "description)
}
例如:
Business_Product("BusProduct01", "业务产品01", true) {
Business_Service("BusService01", "业务服务01")
Business_Service("BusService02", "业务服务02")
Business_Service("BusService03", "业务服务03")
}
Technology_Device("TechDevice01", "技术设备01", true) {
Technology_Device("TechDevice02", "技术设备02")
Technology_Device("TechnDevice03", "技术设备03", true) {
Technology_Device("TechnDevice04", "技术设备04", false)
Technology_Device("TechnDevice05", "技术设备05")
}
}
输出: 注意,当启用嵌套时,Technology-Device元素的表示从节点变为矩形。
主题支持
主题支持已启用,共有5种变体可用。所有主题都基于Archimate规范。
通过添加以下行可以启用主题:
!theme <theme-name> from <theme-folder>
// 示例
!theme archimate-saturated from https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/themes
主题名称 | 预览 |
---|---|
默认(无添加行) | |
archimate-standard | |
archimate-alternate | |
archimate-saturated | |
archimate-lowsaturation | |
archimate-handwriting |
示例
@startuml
!includeurl https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/Archimate.puml
!theme archimate-standard from https://raw.githubusercontent.com/plantuml-stdlib/Archimate-PlantUML/master/themes
title Archimate示例 - 需求和应用服务
'元素'
Motivation_Requirement(ReqPayrollStandard, "使用标准系统进行工资核算")
Motivation_Requirement(ReqBudgetPlanning, "在ERP系统内进行预算规划")
Application_Service(ASPayroll,"工资核算服务")
Application_Service(ASBudgetPlanning,"预算规划服务")
Application_Component(ACSAPFinanceAccRec, "SAP财务 - 应收账款")
Application_Component(ACSAPHR, "SAP人力资源")
Application_Component(ACSAPFin, "SAP财务")
Application_Component(ACSAP,"SAP")
'关系'
Rel_Realization_Up(ASPayroll, ReqPayrollStandard)
Rel_Realization_Up(ASBudgetPlanning, ReqBudgetPlanning)
Rel_Realization_Up(ACSAPFinanceAccRec, ASBudgetPlanning)
Rel_Realization_Up(ACSAPHR, ASPayroll)
Rel_Composition_Up(ACSAPFin, ACSAPFinanceAccRec)
Rel_Composition_Up(ACSAP, ACSAPHR)
Rel_Composition_Up(ACSAP, ACSAPFin)
@enduml
输出:
贡献
如果您有任何想法,提出问题或fork仓库并提交拉取请求。
许可证
该项目采用MIT许可证 - 详见LICENSE.md文件
致谢
- PlantUML参考指南 - PlantUML参考指南
- Archimate 3.1规范 - Archimate规范
- Plant UML Archimate规范 - PlantUML中的archimate规范
- C4-PlantUML - 灵感、基本结构和脚本思路来源