diff --git a/docs/fishbone/docs/sequences.md b/docs/fishbone/docs/sequences.md index 2f24378..3ff5e0e 100644 --- a/docs/fishbone/docs/sequences.md +++ b/docs/fishbone/docs/sequences.md @@ -70,12 +70,13 @@ attribute | description --------- | ----------- `name` | Optional: Name of this step. If not provided name of the filter or name of the contained sequence will be used. `card` | Optional: Cardinality of this step. Defaults to "exactly once/mandatory step" if not provided. Can be any of:
`?`:zero or once, so an optional step,
`*`:any number of times = 0.., so an optional step that can occur not at all or any number of times
`+`:once or multiple times, so a mandatory step that can occur multiple times but at least once -`canCreateNew`| Optional: Determines whether this step can create a new sequence occurrence. Defaults to `true`. Must not be `false`for the first step in a sequence. Set to `false` if this step shall only be checked for a created occurrence from an earlier step. So the `filter` or `sequence` will be ignored then. -`filter` | [DLT filter](https://mbehr1.github.io/dlt-logs/docs/filterReference#details) definition. If this filter matches a msg the step is seen as "matching". Either `filter` or `sequence` must be provided. +`canCreateNew`| Optional: Determines whether this step can create a new sequence occurrence. Defaults to `true`. Must not be `false` for the first step in a sequence. Set to `false` if this step shall only be checked for a created occurrence from an earlier step. So the `filter`,`sequence` or `alt` will be ignored then. +`filter` | [DLT filter](https://mbehr1.github.io/dlt-logs/docs/filterReference#details) definition. If this filter matches a msg the step is seen as "matching". Either `filter`,`sequence` or `alt` must be provided. `sequence` | A definition of a `sub-sequence`. For this step a full sequence is used. This is useful to either break down a bigger sequence into smaller parts of if this step can be executed multiple times (e.g. with `card:*`) but consists of multiple events/steps. See [example](#example). +`alt`| A definition for a list of alternative steps. The `alt` attribute is an array/list of step definitions. Any `card` or `canCreateNew` attribute will automatically be applied to the alternative steps. For this step to be `ok` exactly one step needs to be `ok`. See [example alt](#example-alternative-steps). :::important -A step must contain either a filter or a sub-sequence but not both! +A step must contain either a filter or a sub-sequence or an alt-list but not more than one! ::: :::caution @@ -191,6 +192,54 @@ sequences=[ ] ``` +### example alt(ernative) steps + +See here an example for the `alt` attribute of a step: + +```mermaid +sequenceDiagram + autoNumber + actor tester + participant flash + alt + tester->>+flash: flash new SW if new SW is newer + else + tester->>+flash: skip flash if new SW is the same + else + tester->>+flash: reject flash if new SW is older + end +``` + +```jsonc {8,10,14,18,21} +/get/docs/0/filters? +sequences=[ + { + "name": "SW Update", + "steps":[ + { // this step is an alternative step with 3 alternatives: + "name":"flash", + "alt":[ + { // alt step 1 + "name":"flash new SW if new SW is newer", + "sequence":// e.g. sub-sequence to detect if flash was started with newer SW + }, + { // alt-step 2 + "name":"skip flash if new SW is the same", + "filter":// filter to detect skip of SW + }, + { // alt-step 3 + "name":"reject flash if new SW is older", + "filter":// filter to detect rejection... + } + ] + } + ], + "failures:[ // ommitted here + ], + } +] +``` + ### context Any filter payload regex can capture `context` via capture group names. diff --git a/package.json b/package.json index 97e8279..1953d33 100644 --- a/package.json +++ b/package.json @@ -143,7 +143,7 @@ }, "dependencies": { "@vscode/extension-telemetry": "^0.8.4", - "dlt-logs-utils": "0.6.0", + "dlt-logs-utils": "0.7.0", "jju": "github:mbehr1/jju#3aa4169df926e99083fdd511d7c20b5bd9ba789f", "js-yaml": "^4.1.0", "json5": "2.2.3", diff --git a/src/webview/package.json b/src/webview/package.json index 476b269..dbac1c9 100644 --- a/src/webview/package.json +++ b/src/webview/package.json @@ -13,7 +13,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "dlt-logs-utils": "^0.6.0", + "dlt-logs-utils": "0.7.0", "dompurify": "^2.4.0", "jju": "github:mbehr1/jju#3aa4169df926e99083fdd511d7c20b5bd9ba789f", "js-yaml": "^4.1.0", diff --git a/src/webview/yarn.lock b/src/webview/yarn.lock index b761d0a..64ece1d 100644 --- a/src/webview/yarn.lock +++ b/src/webview/yarn.lock @@ -4259,10 +4259,10 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dlt-logs-utils@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.6.0.tgz#f4104a86fb05fe3c096088c9acac258b86c99b8a" - integrity sha512-1LmVBxZFdp1NNorqWADcztoOdCMewJGbHLTk3LEoUhyusR2RRubPt2DG3Tdmznfv9PY2yiLfjI6v/NDdoAMZnA== +dlt-logs-utils@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.7.0.tgz#4b1d611f8257c88daf56e318b37616683157a8b2" + integrity sha512-Pu+B0CLt+9Z3rzip2TltCWZ3Hvhvb0xwuU1nPaOomSHIvuyzKh/Vnbgv7Pubhj/kiLweXJBbxiI9az7zIGnnUg== dlv@^1.1.3: version "1.1.3" diff --git a/yarn.lock b/yarn.lock index 33ea028..a1cf0cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2453,10 +2453,10 @@ dir-glob@^3.0.0, dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dlt-logs-utils@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.6.0.tgz#f4104a86fb05fe3c096088c9acac258b86c99b8a" - integrity sha512-1LmVBxZFdp1NNorqWADcztoOdCMewJGbHLTk3LEoUhyusR2RRubPt2DG3Tdmznfv9PY2yiLfjI6v/NDdoAMZnA== +dlt-logs-utils@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.7.0.tgz#4b1d611f8257c88daf56e318b37616683157a8b2" + integrity sha512-Pu+B0CLt+9Z3rzip2TltCWZ3Hvhvb0xwuU1nPaOomSHIvuyzKh/Vnbgv7Pubhj/kiLweXJBbxiI9az7zIGnnUg== doctrine@^3.0.0: version "3.0.0"