AgentSkillsCN

archimate-modeling

当用户询问“ArchiMate 元素”、“应选用何种元素”、“ArchiMate 各层”、“业务层”、“应用层”、“技术层”、“动机层”、“战略层”、“主动结构”、“被动结构”、“行为元素”,或在建模企业架构时需要正确选择 ArchiMate 元素类型时,应使用此技能。

SKILL.md
--- frontmatter
name: archimate-modeling
description: This skill should be used when the user asks about "ArchiMate elements", "which element to use", "ArchiMate layers", "business layer", "application layer", "technology layer", "motivation layer", "strategy layer", "active structure", "passive structure", "behavior elements", or needs help selecting the correct ArchiMate element type for modeling enterprise architecture.

ArchiMate Modeling Fundamentals

ArchiMate is The Open Group's standard for enterprise architecture modeling, providing a visual language with 56 elements across 6 core layers connected by 11 relationship types.

The Six Layers

LayerPurposeKey Elements
MotivationWhy (stakeholder concerns, goals)Stakeholder, Driver, Goal, Requirement, Principle
StrategyWhat enterprise intends to achieveCapability, Resource, Value Stream, Course of Action
BusinessBusiness operationsBusiness Actor, Role, Process, Function, Service, Object
ApplicationSoftware and dataApplication Component, Service, Interface, Data Object
TechnologyInfrastructureNode, Device, System Software, Artifact, Network
Implementation & MigrationChange managementWork Package, Deliverable, Plateau, Gap

Three Fundamental Aspects

Every layer contains elements organized into three aspects:

  • Active Structure (Nouns): Elements that perform behavior—actors, components, nodes, interfaces
  • Behavior (Verbs): Activities performed—processes, functions, services, events
  • Passive Structure (Objects): Elements behavior acts upon—business objects, data objects, artifacts

Element Selection Decision Guide

Active Structure: Who/What Performs Behavior?

Need to model...UseNot
Specific person/systemBusiness Actor / Application ComponentRole
Responsibility patternBusiness RoleActor
CollaborationBusiness CollaborationMultiple separate actors
External access pointInterfaceComponent

Behavior: What Is Performed?

Need to model...UseNot
Sequence with defined resultProcessFunction
Ongoing capability/groupingFunctionProcess
Externally visible functionalityServiceProcess/Function
Something that triggers behaviorEventProcess step

Passive Structure: What Is Acted Upon?

Need to model...UseNot
Business-level conceptBusiness ObjectData Object
Structured application dataData ObjectBusiness Object
Perceptible information formRepresentationArtifact
Deployable file/moduleArtifactData Object

Common Confusion Points

PairUse First When...Use Second When...
Component vs FunctionStatic structural unitBehavior performed (no structure)
Process vs FunctionHas sequence, start/endContinuous, no sequence
Service vs ProcessExternal view, what's offeredInternal, how it's done
Actor vs RoleSpecific entityResponsibility that can be filled by different actors

Output Formats

When creating ArchiMate models, use these formats:

Textual Description Format

code
Element Type: [Name]
Layer: [Layer Name]
Description: [What this element represents]
Relationships:
- [relationship type] → [Target Element]

Notation Format

code
[Element Type: Name] → [relationship] → [Element Type: Name]

Example:

code
[Business Role: Claims Handler] → [assignment] → [Business Process: Handle Insurance Claim]
[Business Process: Handle Insurance Claim] → [realization] → [Business Service: Claims Processing]

Key Principles

  1. Layer consistency: Keep elements in appropriate layers; use cross-layer relationships to connect
  2. Service orientation: Expose functionality through services, not direct process/function access
  3. Separation of concerns: Distinguish who (actors/roles), what (behavior), and what's affected (objects)
  4. Realization chains: Connect logical to physical through realization relationships

Additional Resources

Reference Files

For detailed element catalogs and layer-specific guidance:

  • references/element-catalog.md - Complete catalog of all 56 ArchiMate elements with usage guidance
  • references/layer-details.md - Detailed patterns for each layer

Creating Elements via the API

To create elements in Archi, use the Archi Model API Server. Load the archi-server-api skill for full API workflow details.

Element Type to API Type Mapping

All element types use kebab-case in the API:

LayerElementAPI type
StrategyResourceresource
Capabilitycapability
Value Streamvalue-stream
Course of Actioncourse-of-action
BusinessBusiness Actorbusiness-actor
Business Rolebusiness-role
Business Collaborationbusiness-collaboration
Business Interfacebusiness-interface
Business Processbusiness-process
Business Functionbusiness-function
Business Interactionbusiness-interaction
Business Eventbusiness-event
Business Servicebusiness-service
Business Objectbusiness-object
Contractcontract
Representationrepresentation
Productproduct
ApplicationApplication Componentapplication-component
Application Collaborationapplication-collaboration
Application Interfaceapplication-interface
Application Functionapplication-function
Application Interactionapplication-interaction
Application Processapplication-process
Application Eventapplication-event
Application Serviceapplication-service
Data Objectdata-object
TechnologyNodenode
Devicedevice
System Softwaresystem-software
Technology Collaborationtechnology-collaboration
Technology Interfacetechnology-interface
Pathpath
Communication Networkcommunication-network
Technology Functiontechnology-function
Technology Processtechnology-process
Technology Interactiontechnology-interaction
Technology Eventtechnology-event
Technology Servicetechnology-service
Artifactartifact
PhysicalEquipmentequipment
Facilityfacility
Distribution Networkdistribution-network
Materialmaterial
MotivationStakeholderstakeholder
Driverdriver
Assessmentassessment
Goalgoal
Outcomeoutcome
Principleprinciple
Requirementrequirement
Constraintconstraint
Meaningmeaning
Valuevalue
ImplementationWork Packagework-package
Deliverabledeliverable
Implementation Eventimplementation-event
Plateauplateau
Gapgap
OtherLocationlocation
Groupinggrouping
Junctionjunction

Quick API Examples by Layer

Business Layer:

bash
curl -s -X POST http://localhost:8765/model/apply \
  -H "Content-Type: application/json" \
  -d '{"changes": [
    {"op": "createElement", "type": "business-actor", "name": "Customer", "tempId": "e1"},
    {"op": "createElement", "type": "business-process", "name": "Submit Order", "tempId": "e2"},
    {"op": "createElement", "type": "business-service", "name": "Order Processing", "tempId": "e3"}
  ]}'

Application Layer:

bash
curl -s -X POST http://localhost:8765/model/apply \
  -H "Content-Type: application/json" \
  -d '{"changes": [
    {"op": "createElement", "type": "application-component", "name": "Order System", "tempId": "e1"},
    {"op": "createElement", "type": "application-service", "name": "Order Management", "tempId": "e2"},
    {"op": "createElement", "type": "data-object", "name": "Order Record", "tempId": "e3"}
  ]}'

Technology Layer:

bash
curl -s -X POST http://localhost:8765/model/apply \
  -H "Content-Type: application/json" \
  -d '{"changes": [
    {"op": "createElement", "type": "node", "name": "Application Server", "tempId": "e1"},
    {"op": "createElement", "type": "system-software", "name": "PostgreSQL", "tempId": "e2"},
    {"op": "createElement", "type": "artifact", "name": "order-service.jar", "tempId": "e3"}
  ]}'

After each POST /model/apply, poll GET /ops/status?opId=OP_ID for the real IDs.