Skip to content

Commit

Permalink
Add ecosystem to node spec and tie flows into core.json
Browse files Browse the repository at this point in the history
  • Loading branch information
LeighFinegold committed Dec 9, 2024
1 parent 94dcc45 commit 3b34098
Show file tree
Hide file tree
Showing 14 changed files with 1,195 additions and 62 deletions.
7 changes: 7 additions & 0 deletions calm/draft/2024-12/meta/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@
},
"controls": {
"$ref": "control.json#/defs/controls"
},
"flows": {
"type": "array",
"items": {
"$ref": "flow.json#/defs/flow"
}
}
},
"defs": {
Expand Down Expand Up @@ -175,6 +181,7 @@
"node-type-definition": {
"enum": [
"actor",
"ecosystem",
"system",
"service",
"database",
Expand Down
128 changes: 66 additions & 62 deletions calm/draft/2024-12/meta/flow.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,78 +3,82 @@
"$id": "https://calm.finos.org/draft/2024-12/meta/flow.json",
"title": "Business Flow Model",
"description": "Defines business flows that relate to technical architectures, allowing mapping of flows to technical components and attaching control requirements.",
"type": "object",
"properties": {
"unique-id": {
"type": "string",
"description": "Unique identifier for the flow"
},
"name": {
"type": "string",
"description": "Descriptive name for the business flow"
},
"description": {
"type": "string",
"description": "Detailed description of the flow's purpose"
},
"requirement-url": {
"type": "string",
"description": "Link to a detailed requirement document"
},
"transitions": {
"type": "array",
"items": {
"$ref": "#/defs/transition"
}
},
"controls": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/control.json#/defs/controls"
},
"metadata": {
"$ref": "#/defs/metadata"
}
},
"required": [
"unique-id",
"name",
"description",
"transitions"
],
"defs": {
"transition": {
"flow": {
"type": "object",
"properties": {
"relationship-unique-id": {
"unique-id": {
"type": "string",
"description": "Unique identifier for the relationship in the architecture"
"description": "Unique identifier for the flow"
},
"sequence-number": {
"type": "integer",
"description": "Indicates the sequence of the relationship in the flow"
"name": {
"type": "string",
"description": "Descriptive name for the business flow"
},
"summary": {
"description": {
"type": "string",
"description": "Functional summary of what is happening in the transition"
"description": "Detailed description of the flow's purpose"
},
"direction": {
"enum": [
"source-to-destination",
"destination-to-source"
],
"default": "source-to-destination"
"requirement-url": {
"type": "string",
"description": "Link to a detailed requirement document"
},
"required": [
"relationship-unique-id",
"sequence-number",
"summary"
]
"transitions": {
"type": "array",
"items": {
"$ref": "#/defs/transition"
}
},
"controls": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/control.json#/defs/controls"
},
"metadata": {
"$ref": "#/defs/metadata"
}
},
"minItems": 1
},
"metadata": {
"type": "array",
"items": {
"type": "object"
"required": [
"unique-id",
"name",
"description",
"transitions"
],
"defs": {
"transition": {
"type": "object",
"properties": {
"relationship-unique-id": {
"type": "string",
"description": "Unique identifier for the relationship in the architecture"
},
"sequence-number": {
"type": "integer",
"description": "Indicates the sequence of the relationship in the flow"
},
"summary": {
"type": "string",
"description": "Functional summary of what is happening in the transition"
},
"direction": {
"enum": [
"source-to-destination",
"destination-to-source"
],
"default": "source-to-destination"
},
"required": [
"relationship-unique-id",
"sequence-number",
"summary"
]
},
"minItems": 1
},
"metadata": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
Expand Down
7 changes: 7 additions & 0 deletions calm/samples/2024-12/traderx/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### TraderX Example

[TraderX](https://github.com/finos/traderX) is a Sample Trading Application, designed to be a distributed reference application in the financial services domain.

This sample uses the [C4 model](https://github.com/finos/traderX/blob/main/docs/c4/c4-diagram.png) of the TraderX application and shows how to model it using CALM.

You can see in thus sample how you can use the base CALM vocab is both JSON and YAML documents.
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://calm.finos.org/traderx/control/flow-sla-control-requirement",
"title": "Flow SLA Control",
"type": "object",
"allOf": [
{
"$ref": "https://calm.finos.org/draft/2024-12/meta/control-requirement.json"
}
],
"properties": {
"control-id": {
"const": "flow-sla-001"
},
"name": {
"const": "Flow SLA Control"
},
"description": {
"const": "Ensure that each flow meets the defined Service Level Agreement (SLA)"
},
"latency": {
"type": "object",
"properties": {
"expected-latency": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "The expected latency for completion of flow"
},
"alert-threshold": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "If latency exceeds this threshold, an alert will be triggered."
}
},
"required": [
"expected-latency",
"alert-threshold"
]
},
"throughput": {
"type": "object",
"properties": {
"expected-message-rate": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Define the expected message rate that the flow should handle e.g. 1000 per second"
}
},
"required": [
"expected-message-rate"
]
},
"availability": {
"type": "object",
"properties": {
"uptime-guarantee": {
"type": "number",
"description": "Percentage of availability required (e.g., 99.9%).",
"minimum": 0,
"maximum": 100
}
},
"required": [
"uptime-guarantee"
]
},
"data-integrity": {
"type": "object",
"properties": {
"message-reliability": {
"enum": [
"atLeastOnce",
"atMostOnce",
"exactlyOnce"
],
"description": "Guarantee that messages are delivered in the correct order and without duplication."
},
"loss-tolerance": {
"type": "number",
"description": "Specify acceptable levels of message loss as a percentage (e.g., 0 to 100).",
"minimum": 0,
"maximum": 100
}
},
"required": [
"message-reliability",
"loss-tolerance"
]
},
"error-handling": {
"type": "object",
"properties": {
"retry-logic": {
"type": "object",
"properties": {
"max-retries": {
"type": "integer",
"description": "Specify the maximum number of retries in case of failures."
},
"retry-interval": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Define the interval between retries."
}
},
"required": ["max-retries", "retry-interval"]
}
},
"required": [
"retry-logic"
]
},
"monitoring": {
"type": "object",
"properties": {
"real-time-monitoring": {
"type": "string",
"description": "Define the monitoring systems for tracking performance against the SLA."
},
"consumer-reporting": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Specify the reporting frequency for the consumer, e.g., daily, weekly, or monthly."
}
},
"required": [
"real-time-monitoring",
"consumer-reporting"
]
},
"incident-response": {
"type": "object",
"properties": {
"incident-resolution-time": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Define timeframes for responding to SLA-impacting issues."
},
"escalation-protocols": {
"type": "object",
"properties": {
"incident-start-time-post-alert": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Timeframe for initiating incident response after an alert."
},
"escalation-path": {
"type": "string",
"description": "Specify the escalation path for SLA violations."
}
},
"required": [
"incident-start-time-post-alert",
"escalation-path"
]
}
},
"required": [
"incident-resolution-time",
"escalation-protocols"
]
},
"review-adjustments": {
"type": "object",
"properties": {
"sla-review": {
"$ref": "https://calm.finos.org/draft/2024-12/meta/units.json#/defs/time-unit",
"description": "Outline a schedule for regularly reviewing the SLA."
}
},
"required": [
"sla-review"
]
}
},
"required": [
"control-id",
"name",
"description",
"latency",
"throughput",
"availability",
"data-integrity",
"error-handling",
"monitoring",
"incident-response",
"review-adjustments"
]
}
Loading

0 comments on commit 3b34098

Please sign in to comment.