Extract product-agnostic workflow engine from Ablera.Serdica.Workflow into standalone StellaOps.Workflow.* libraries targeting net10.0. Libraries (14): - Contracts, Abstractions (compiler, decompiler, expression runtime) - Engine (execution, signaling, scheduling, projections, hosted services) - ElkSharp (generic graph layout algorithm) - Renderer.ElkSharp, Renderer.ElkJs, Renderer.Msagl, Renderer.Svg - Signaling.Redis, Signaling.OracleAq - DataStore.MongoDB, DataStore.PostgreSQL, DataStore.Oracle WebService: ASP.NET Core Minimal API with 22 endpoints Tests (8 projects, 109 tests pass): - Engine.Tests (105 pass), WebService.Tests (4 E2E pass) - Renderer.Tests, DataStore.MongoDB/Oracle/PostgreSQL.Tests - Signaling.Redis.Tests, IntegrationTests.Shared Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
151 lines
3.6 KiB
JSON
151 lines
3.6 KiB
JSON
{
|
|
"schemaVersion": "stellaops.workflow.definition/v1",
|
|
"workflowName": "UpdateSrPolicyIdSrcAndCopyCovers",
|
|
"workflowVersion": "1.0.0",
|
|
"displayName": "Update Policy ID Source and Copy Covers",
|
|
"startRequest": {
|
|
"contractName": "StellaOps.Workflow.Engine.Tests.TestUpdateSrPolicyIdSrcAndCopyCoversStartRequest",
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"srPolicyId": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"allowAdditionalProperties": true
|
|
},
|
|
"workflowRoles": [
|
|
"DBA"
|
|
],
|
|
"businessReference": {
|
|
"keyExpression": {
|
|
"$type": "path",
|
|
"path": "start.srPolicyId"
|
|
},
|
|
"parts": [
|
|
{
|
|
"name": "policyId",
|
|
"expression": {
|
|
"$type": "path",
|
|
"path": "start.srPolicyId"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"start": {
|
|
"initializeStateExpression": {
|
|
"$type": "object",
|
|
"properties": [
|
|
{
|
|
"name": "srPolicyId",
|
|
"expression": {
|
|
"$type": "path",
|
|
"path": "start.srPolicyId"
|
|
}
|
|
},
|
|
{
|
|
"name": "shouldContinue",
|
|
"expression": {
|
|
"$type": "boolean",
|
|
"value": true
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"initialSequence": {
|
|
"steps": [
|
|
{
|
|
"$type": "call-transport",
|
|
"stepName": "Update Policy Source",
|
|
"invocation": {
|
|
"address": {
|
|
"$type": "legacy-rabbit",
|
|
"command": "pas_update_policy_source",
|
|
"mode": 1
|
|
},
|
|
"payloadExpression": {
|
|
"$type": "object",
|
|
"properties": [
|
|
{
|
|
"name": "srPolicyId",
|
|
"expression": {
|
|
"$type": "path",
|
|
"path": "state.srPolicyId"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$type": "decision",
|
|
"decisionName": "Continue or end process",
|
|
"conditionExpression": {
|
|
"$type": "binary",
|
|
"operator": "eq",
|
|
"left": {
|
|
"$type": "path",
|
|
"path": "state.shouldContinue"
|
|
},
|
|
"right": {
|
|
"$type": "boolean",
|
|
"value": true
|
|
}
|
|
},
|
|
"whenTrue": {
|
|
"steps": [
|
|
{
|
|
"$type": "call-transport",
|
|
"stepName": "Copy Covers",
|
|
"invocation": {
|
|
"address": {
|
|
"$type": "legacy-rabbit",
|
|
"command": "pas_copy_covers",
|
|
"mode": 1
|
|
},
|
|
"payloadExpression": {
|
|
"$type": "object",
|
|
"properties": [
|
|
{
|
|
"name": "srPolicyId",
|
|
"expression": {
|
|
"$type": "path",
|
|
"path": "state.srPolicyId"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$type": "complete"
|
|
}
|
|
]
|
|
},
|
|
"whenElse": {
|
|
"steps": [
|
|
{
|
|
"$type": "complete"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"tasks": [],
|
|
"requiredModules": [
|
|
{
|
|
"moduleName": "transport.legacy-rabbit",
|
|
"versionExpression": "\u003E=1.0.0",
|
|
"optional": false
|
|
},
|
|
{
|
|
"moduleName": "workflow.dsl.core",
|
|
"versionExpression": "\u003E=1.0.0",
|
|
"optional": false
|
|
}
|
|
],
|
|
"requiredCapabilities": []
|
|
} |