Hexagonal-Architecture-diagram.excalidraw
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠==
Text Elements
Application Core ^hcore Domain Model ^hdom Use Cases / Application Services ^happ Port: HTTP API ^ph1 REST Controller Adapter ^ha1 Port: CLI ^ph2 CLI Adapter ^ha2 Port: Events In ^ph3 Message Listener Adapter ^ha3 Port: Persistence ^pp1 PostgreSQL Adapter ^pa1 Port: Messaging ^pp2 RabbitMQ Adapter ^pa2 Port: External API ^pp3 HTTP Client Adapter ^pa3 drives ^drv1 drives ^drv2 drives ^drv3 driven by app ^drn1 driven by app ^drn2 driven by app ^drn3 Ports = interfaces owned by the application. Adapters = implementations that plug in from outside. ^portdef Driving Side (Primary Ports) ^driving Driven Side (Secondary Ports) ^driven
%%
Drawing
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [
{
"id": "hexagon",
"type": "rectangle",
"x": 400,
"y": 150,
"width": 500,
"height": 400,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#d0ebff",
"fillStyle": "solid",
"strokeWidth": 3,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": {"type": 3, "value": 30},
"seed": 2001,
"version": 1,
"versionNonce": 2001,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "core-label",
"type": "text",
"x": 500,
"y": 170,
"width": 300,
"height": 30,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2002,
"version": 1,
"versionNonce": 2002,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Application Core",
"fontSize": 18,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 24,
"containerId": null,
"originalText": "Application Core"
},
{
"id": "domain-label",
"type": "text",
"x": 500,
"y": 270,
"width": 300,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2003,
"version": 1,
"versionNonce": 2003,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Domain Model\n(entities, value objects)",
"fontSize": 14,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 43,
"containerId": null,
"originalText": "Domain Model\n(entities, value objects)"
},
{
"id": "usecase-label",
"type": "text",
"x": 500,
"y": 380,
"width": 300,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2004,
"version": 1,
"versionNonce": 2004,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Use Cases / Application Services",
"fontSize": 14,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 43,
"containerId": null,
"originalText": "Use Cases / Application Services"
},
{
"id": "port-http",
"type": "rectangle",
"x": 280,
"y": 160,
"width": 120,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#d3f9d8",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2005,
"version": 1,
"versionNonce": 2005,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-http-label",
"type": "text",
"x": 285,
"y": 177,
"width": 110,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2006,
"version": 1,
"versionNonce": 2006,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: HTTP API",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: HTTP API"
},
{
"id": "adapter-rest",
"type": "rectangle",
"x": 110,
"y": 160,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2007,
"version": 1,
"versionNonce": 2007,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-rest-label",
"type": "text",
"x": 115,
"y": 177,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2008,
"version": 1,
"versionNonce": 2008,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "REST Controller Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "REST Controller Adapter"
},
{
"id": "port-cli",
"type": "rectangle",
"x": 280,
"y": 330,
"width": 120,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#d3f9d8",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2009,
"version": 1,
"versionNonce": 2009,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-cli-label",
"type": "text",
"x": 285,
"y": 347,
"width": 110,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2010,
"version": 1,
"versionNonce": 2010,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: CLI",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: CLI"
},
{
"id": "adapter-cli",
"type": "rectangle",
"x": 110,
"y": 330,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2011,
"version": 1,
"versionNonce": 2011,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-cli-label",
"type": "text",
"x": 115,
"y": 347,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2012,
"version": 1,
"versionNonce": 2012,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "CLI Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "CLI Adapter"
},
{
"id": "port-events-in",
"type": "rectangle",
"x": 280,
"y": 470,
"width": 120,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#d3f9d8",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2013,
"version": 1,
"versionNonce": 2013,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-events-in-label",
"type": "text",
"x": 285,
"y": 487,
"width": 110,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2014,
"version": 1,
"versionNonce": 2014,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: Events In",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: Events In"
},
{
"id": "adapter-msg-listener",
"type": "rectangle",
"x": 110,
"y": 470,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2015,
"version": 1,
"versionNonce": 2015,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-msg-listener-label",
"type": "text",
"x": 115,
"y": 487,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2016,
"version": 1,
"versionNonce": 2016,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Message Listener Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Message Listener Adapter"
},
{
"id": "arrow-drives1",
"type": "arrow",
"x": 270,
"y": 185,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2017,
"version": 1,
"versionNonce": 2017,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "arrow-drives2",
"type": "arrow",
"x": 270,
"y": 355,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2018,
"version": 1,
"versionNonce": 2018,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "arrow-drives3",
"type": "arrow",
"x": 270,
"y": 495,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2019,
"version": 1,
"versionNonce": 2019,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "label-drives1",
"type": "text",
"x": 245,
"y": 168,
"width": 40,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2020,
"version": 1,
"versionNonce": 2020,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "drives",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "drives"
},
{
"id": "label-drives2",
"type": "text",
"x": 245,
"y": 338,
"width": 40,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2021,
"version": 1,
"versionNonce": 2021,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "drives",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "drives"
},
{
"id": "label-drives3",
"type": "text",
"x": 245,
"y": 478,
"width": 40,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2022,
"version": 1,
"versionNonce": 2022,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "drives",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "drives"
},
{
"id": "driving-label",
"type": "text",
"x": 110,
"y": 110,
"width": 200,
"height": 30,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2023,
"version": 1,
"versionNonce": 2023,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Driving Side (Primary Ports)",
"fontSize": 14,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 24,
"containerId": null,
"originalText": "Driving Side (Primary Ports)"
},
{
"id": "port-persistence",
"type": "rectangle",
"x": 900,
"y": 160,
"width": 140,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffe8cc",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2024,
"version": 1,
"versionNonce": 2024,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-persistence-label",
"type": "text",
"x": 905,
"y": 177,
"width": 130,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2025,
"version": 1,
"versionNonce": 2025,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: Persistence",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: Persistence"
},
{
"id": "adapter-postgres",
"type": "rectangle",
"x": 1050,
"y": 160,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2026,
"version": 1,
"versionNonce": 2026,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-postgres-label",
"type": "text",
"x": 1055,
"y": 177,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2027,
"version": 1,
"versionNonce": 2027,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "PostgreSQL Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "PostgreSQL Adapter"
},
{
"id": "port-messaging",
"type": "rectangle",
"x": 900,
"y": 330,
"width": 140,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffe8cc",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2028,
"version": 1,
"versionNonce": 2028,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-messaging-label",
"type": "text",
"x": 905,
"y": 347,
"width": 130,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2029,
"version": 1,
"versionNonce": 2029,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: Messaging",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: Messaging"
},
{
"id": "adapter-rabbitmq",
"type": "rectangle",
"x": 1050,
"y": 330,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2030,
"version": 1,
"versionNonce": 2030,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-rabbitmq-label",
"type": "text",
"x": 1055,
"y": 347,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2031,
"version": 1,
"versionNonce": 2031,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "RabbitMQ Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "RabbitMQ Adapter"
},
{
"id": "port-ext-api",
"type": "rectangle",
"x": 900,
"y": 470,
"width": 140,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffe8cc",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2032,
"version": 1,
"versionNonce": 2032,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "port-ext-api-label",
"type": "text",
"x": 905,
"y": 487,
"width": 130,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2033,
"version": 1,
"versionNonce": 2033,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Port: External API",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "Port: External API"
},
{
"id": "adapter-http-client",
"type": "rectangle",
"x": 1050,
"y": 470,
"width": 160,
"height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2034,
"version": 1,
"versionNonce": 2034,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
},
{
"id": "adapter-http-client-label",
"type": "text",
"x": 1055,
"y": 487,
"width": 150,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2035,
"version": 1,
"versionNonce": 2035,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "HTTP Client Adapter",
"fontSize": 12,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "HTTP Client Adapter"
},
{
"id": "arrow-driven1",
"type": "arrow",
"x": 1040,
"y": 185,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2036,
"version": 1,
"versionNonce": 2036,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "arrow-driven2",
"type": "arrow",
"x": 1040,
"y": 355,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2037,
"version": 1,
"versionNonce": 2037,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "arrow-driven3",
"type": "arrow",
"x": 1040,
"y": 495,
"width": 10,
"height": 0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2038,
"version": 1,
"versionNonce": 2038,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"points": [[0, 0], [10, 0]],
"lastCommittedPoint": null,
"startBinding": null,
"endBinding": null,
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "label-driven1",
"type": "text",
"x": 1000,
"y": 168,
"width": 80,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2039,
"version": 1,
"versionNonce": 2039,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "driven by app",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "driven by app"
},
{
"id": "label-driven2",
"type": "text",
"x": 1000,
"y": 338,
"width": 80,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2040,
"version": 1,
"versionNonce": 2040,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "driven by app",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "driven by app"
},
{
"id": "label-driven3",
"type": "text",
"x": 1000,
"y": 478,
"width": 80,
"height": 16,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2041,
"version": 1,
"versionNonce": 2041,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "driven by app",
"fontSize": 10,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 12,
"containerId": null,
"originalText": "driven by app"
},
{
"id": "driven-label",
"type": "text",
"x": 950,
"y": 110,
"width": 220,
"height": 30,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2042,
"version": 1,
"versionNonce": 2042,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Driven Side (Secondary Ports)",
"fontSize": 14,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 24,
"containerId": null,
"originalText": "Driven Side (Secondary Ports)"
},
{
"id": "port-def-text",
"type": "text",
"x": 400,
"y": 610,
"width": 500,
"height": 40,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": null,
"seed": 2043,
"version": 1,
"versionNonce": 2043,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false,
"text": "Ports = interfaces owned by the application.\nAdapters = implementations that plug in from outside.",
"fontSize": 13,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 34,
"containerId": null,
"originalText": "Ports = interfaces owned by the application.\nAdapters = implementations that plug in from outside."
}
],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
},
"files": {}
}%%