Skip to content

Commit 3ffb74f

Browse files
authored
Merge pull request #91 from frmscoe/dev
Release team demo
2 parents d291f26 + 794fe37 commit 3ffb74f

File tree

105 files changed

+4777
-50
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+4777
-50
lines changed

.github/PULL_REQUEST_TEMPLATE.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
13
## What did we change?
24

35
## Why are we doing this?
46

57
## How was it tested?
68
- [ ] Locally
79
- [ ] Development Environment
8-
- [ ] Not needed, changes very basic
10+
- [ ] Not needed, changes very basic
11+
- [ ] Husky successfully run
12+
- [ ] Unit tests passing and Documentation done

Community/Tazama-Contribution-Guide.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ From a DevOps perspective, we make use of the following tools:
160160
- [Mermaid.js](http://mermaid.js.org/#/) for markdown-embedded diagrams in GitHub
161161
- [Atlassian Confluence](https://www.atlassian.com/software/confluence) is (currently) hosting our project documentation at <https://frmscoe.atlassian.net/wiki/spaces/FRMS/overview>
162162
- [PlantUML](https://plantuml.com/) for embedded diagrams in Confluence
163-
- [Drawio](https://www.drawio.com/) for embedded diagrams in GitHub
163+
- [Drawio](https://www.drawio.com/) for embedded diagrams in GitHub. See [guide for draw.io](/guides/drawio-guide.md)
164164

165165
[Top](#contribution-guide)
166166

@@ -384,7 +384,7 @@ Follow the steps below to get the `Rule Executer` on your operating table:
384384
385385
8. Sending messages to the microservice processor via the NATS REST Proxy
386386
387-
Let's try to send a test message to our locally running CRSP via the NATS REST Proxy using a pre-fabricated Postman test. If you previously cloned the Postman repository, the `Rule-901-Quick-Check.postman_collection.json` test will be located in the Postman repository folder.
387+
Let's try to send a test message to our locally running Event Director via the NATS REST Proxy using a pre-fabricated Postman test. If you previously cloned the Postman repository, the `Rule-901-Quick-Check.postman_collection.json` test will be located in the Postman repository folder.
388388
389389
Because the application is running in our previous Windows Command Prompt, we'll need to open a new one and then, using the following Newman command in the new Command Prompt, we can execute the test on our running processor:
390390
@@ -428,7 +428,7 @@ Read the [Product Overview](/README.md) for a detailed overview of the system.
428428
The Project organization on GitHub contains both PUBLIC and PRIVATE repositories. Core components of the system are in public repositories that are accessible to anyone:
429429
430430
- The Transaction Monitoring Service (TMS) API
431-
- The Channel Router and Setup Processor (CRSP)
431+
- The Event Director (ED)
432432
- The Rule Executor (the rule processor wrapper function)
433433
- Rule 901, a sample rule
434434
- The Typology Processor
@@ -454,14 +454,12 @@ flowchart TB
454454
F -->|Push| G[5. Create Pull Request]
455455
G -->|Review| H[6. Code Review]
456456
H -->|Approve| I{7. Merge PR}
457-
I -->|Merge to Main| J[8. Close Issue]
457+
I -->|Merge to Dev| J[8. Close Issue]
458458
J --> K[9. Deploy to Production]
459459
K --> L[10. Monitor & Feedback]
460460
H -->|Request Changes| D
461461
```
462462

463-
1. Fork the repository you want to work on
464-
465463
[Top](#contribution-guide)
466464

467465
## 5. Making and Submitting Contributions
@@ -487,6 +485,8 @@ Best practices for making changes.
487485

488486
**Code Documentation** – Electronic documentation has been auto-generated (where available) and has been checked for correctness. Also have sufficient code comments. [Developer] + [PR Approver]
489487

488+
**Licensing comment** Add the following string as a comment ("SPDX-License-Identifier: Apache-2.0") at the top of every file in the organisation in GitHub that is capable of including a comment i.e. extensions="ts" "js" "env" "template" "eslintignore" "yaml" "properties" "npmrc" "editorconfig" "dockerignore" "gitignore" "prettierignore" "md" "helmignore" "Makefile" "sh" "npmignore" "plantuml" "yml"
489+
490490
**\*Release Notes / Version Control** - TODO Aaron - figure out what greater ML does - check this
491491

492492
**Code Refactoring** - Source code has been refactored to make it comprehensive, maintainable and amenable to change (*unless agreed otherwise as part of refactoring existing legacy code). [Developer]

Guides/drawio-guide.md

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<!-- SPDX-License-Identifier: Apache-2.0 -->
2+
3+
- [Introduction](#introduction)
4+
- [Tazama Template](#tazama-template)
5+
- [Create and Update diagrams in draw.io](#create-and-update-diagrams-in-drawio)
6+
- [Embed diagrams in markdown files](#embed-diagrams-in-markdown-files)
7+
8+
## Introduction
9+
10+
This guide will take you through the steps to embed a Draw.io diagram into a markdown file.
11+
12+
For the purposes of this guide, I am using a folder \\\GitHub\docs which you can copy by cloning the `docs` repository to a GitHub folder in your local environment
13+
14+
![draw.io clone docs repo](../images/draw.io-clone-docs-repo.png).
15+
16+
In the example in this guide, the location images for this repository were saved here
17+
18+
![draw.io start](../images/draw.io-folder.png).
19+
20+
## Tazama Template
21+
22+
The Tazama template with the color palette and font can be found the location \\\GitHub\docs\files\templates\Tazama-template.drawio.png
23+
Copy the file from your local location where you cloned the docs repository to your preferred working file location. ![Tazama-template.drawio.png](../files/templates/Tazama-template.drawio.png).
24+
25+
**1. Access the website https://www.drawio.com/ and click on `Start` button.**
26+
27+
![draw.io start](../images/draw.io-start-button.png).
28+
29+
**2. Select `Open Existing Diagram` and find the Tazama template file you just saved**
30+
31+
![draw.io create new diagram](../images/draw.io-create-new-diagram.png)
32+
33+
[Top](#introduction)
34+
35+
## Create and Update diagrams in draw.io
36+
37+
**3. Save the file and export to svg format**
38+
39+
![draw.io export svg](../images/draw.io-export-svg.png)
40+
41+
**4. click Export**
42+
43+
![draw.io svg export button](../images/draw.io-svg-export-button.png)
44+
45+
**5. click Save**
46+
47+
![draw.io save as svg ](../images/draw.io-save-as-svg.png)
48+
49+
## Embed diagrams in markdown files
50+
51+
![draw.io embed diagram in markdown](../images/draw.io-embed-diagram.png)

Product/configuration-management.md

+15-24
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,6 @@
3636
- [3.1. Introduction and Basics](#31-introduction-and-basics)
3737
- [3.2. Configuration version management of processors](#32-configuration-version-management-of-processors)
3838
- [3.3. The Network Map](#33-the-network-map)
39-
- [References](#references)
40-
- [Ref 1](#ref-1)
41-
- [Ref 2](#ref-2)
42-
- [Ref 3](#ref-3)
43-
- [Ref 4](#ref-4)
4439

4540
# TL;DR
4641

@@ -60,7 +55,7 @@ Configuration documents can be uploaded to the system using the ArangoDB API dep
6055

6156
[Top](#configuration-management)
6257

63-
# 1\. Overview of the detection methodology
58+
# 1. Overview of the detection methodology
6459

6560
The core detection capability within the system is distributed across three distinct steps in the end-to-end evaluation flow.
6661

@@ -105,7 +100,7 @@ In this document, we will discuss how the various configuration documents are ex
105100

106101
[Top](#configuration-management)
107102

108-
# 2\. Configuration Management
103+
# 2. Configuration Management
109104

110105
Configuration documents are essentially files that contain a processor-specific configuration object in JSON format. The recommended way to upload the configuration file to the appropriate configuration database (`networkMap` or `configuration`) and collection is via ArangoDB’s HTTP API that is deployed as standard during system deployment.
111106

@@ -235,7 +230,9 @@ Each exit condition contains the same attributes:
235230
| **Attribute** | **Description** |
236231
| --- | --- |
237232
| `subRuleRef` | Every rule processor is capable of reporting a number of different outcomes, but only a single outcome from the complete set is ultimately delivered to the typology processor. Each outcome is defined by a unique sub-rule reference identifier to differentiate the delivered outcome from the others and also to allow the typology processor to apply a unique weighting to that specific outcome.<br><br> By convention, the exit condition sub-rule references are prefaced with an 'x'. |
238-
| `reason` | The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. [Reason descriptions will be refined during future enhancements](#Ref 1) |
233+
| `reason` | The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. Reason descriptions will be refined during future enhancements[^1] |
234+
235+
239236

240237
#### The `.err` exit condition
241238

@@ -303,7 +300,7 @@ Each rule result band contains the same information:
303300
| `subRuleRef` | Every rule processor is capable of reporting a number of different outcomes, but only a single outcome from the complete set is ultimately delivered to the typology processor. Each outcome is defined by a unique sub-rule reference identifier to differentiate the delivered outcome from the others and also to allow the typology processor to apply a unique weighting to that specific outcome.<br><br> We have elected to assign a numeric sequence to the sub-rule references for result bands, prefaced with a dot (“.”) separator, but this format is not mandatory for the sub-rule reference string. Any descriptive and unique string would be an acceptable sub-rule reference. |
304301
| `lowerLimit` | This attribute defines the lower limit of the band range and is evaluated inclusively (`>=`).<br><br> Where a lower limit is not provided, the rule processor will assume the intended target lower limit is -∞. Unless the very first result band in a configuration has a clear and unambiguous lower limit, it is often omitted. |
305302
| `upperLimit` | This attribute defines the upper limit of the band range and is evaluated exclusively (`<`).<br><br>Where an upper limit is not provided, the rule processor will assume the intended target upper limit is +∞. Unless the very last result band in a configuration has a clear and unambiguous upper limit, it is often omitted. |
306-
| `reason`| The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. [Reason descriptions will be refined during future enhancements](#Ref 1)|
303+
| `reason`| The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. Reason descriptions will be refined during future enhancements[^1]|
307304

308305
One of the most frequent limit values in use in the system is based on time-frames. In the system, all time-frames and associated limits are represented in milliseconds. The following table reflects the conventional milliseconds for different time terms in our configurations:
309306

@@ -356,7 +353,7 @@ Each rule result case contains the same information:
356353
| --- | --- |
357354
| `value` | This attribute defines the specific value that will be matched in the rule processor (`=`).<br><br>Every case contains a value, with the exception of the default “else” case.<br><br>Values can be either strings, encapsulated in quotes, or numbers, without quotes. |
358355
| `subRuleRef` | Every rule processor is capable of reporting a number of different outcomes, but only a single outcome from the complete set is ultimately delivered to the typology processor. Each outcome is defined by a unique sub-rule reference identifier to differentiate the delivered outcome from the others and also to allow the typology processor to apply a unique weighting to that specific outcome.<br><br>We have elected to assign a numeric sequence to the sub-rule references for result cases, prefaced with a dot (“.”) separator, but this format is not mandatory for the sub-rule reference string. Any descriptive and unique string would be an acceptable sub-rule reference.<br><br>By convention, the default “else” outcome has a sub-rule reference of `.00`. |
359-
| `reason`| The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. [Reason descriptions will be refined during future enhancements](#Ref 1) |
356+
| `reason`| The reason provides a human-readable description of the result that accompanies the rule result to the eventual over-all evaluation result. Reason descriptions will be refined during future enhancements[^1] |
360357

361358
### Complete example of a rule processor configuration
362359

@@ -670,9 +667,9 @@ The network map “header” contains metadata that describes the network map. T
670667

671668
### The messages object
672669

673-
The `messages` object is an array that contains information about the transactions that the system is expected to evaluate. Each element in the `messages` object contains the following attributes [Ref 4](#ref-4):
670+
The `messages` object is an array that contains information about the transactions that the system is expected to evaluate. Each element in the `messages` object contains the following attributes[^4]:
674671

675-
* `id` is the unique identifier for the Transaction Aggregation and Decisioning Processor (TADProc) that will be used to ultimately conclude the evaluation of a specific transaction. It is possible for a transaction to be routed to a unique TADProc that contains specialized functionality related to summarizing the transaction’s results [Ref 3](#ref-3).
672+
* `id` is the unique identifier for the Transaction Aggregation and Decisioning Processor (TADProc) that will be used to ultimately conclude the evaluation of a specific transaction. It is possible for a transaction to be routed to a unique TADProc that contains specialized functionality related to summarizing the transaction’s results[^3]
676673

677674
* `cfg` is the unique version of the deployed TADProc that will be used to conclude the evaluation of the transaction.
678675

@@ -696,7 +693,7 @@ The `typologies` object is a nested array object inside the transaction element
696693

697694
The typology object array contains the following attributes:
698695

699-
* `id` is the unique identifier for the typology processor that will be invoked to aggregate the specified rule results into a typology. It is possible for a transaction to be routed to a unique typology processor[Ref 3](#ref-3) that contains specialized functionality related to calculating the specific typology.
696+
* `id` is the unique identifier for the typology processor that will be invoked to aggregate the specified rule results into a typology. It is possible for a transaction to be routed to a unique typology processor[^3] that contains specialized functionality related to calculating the specific typology.
700697

701698
* `cfg` defines the unique typology and the version of its configuration. The typology processor is effectively just a generic engine that processes the typology’s configuration to combine rules into a typology in a specific way. From a certain perspective, the typology configuration *is* the typology.
702699

@@ -794,7 +791,7 @@ Once a configuration document has been created or updated and uploaded to the co
794791

795792
The network map defines the routing of an incoming transaction to all rules and typologies that are required to evaluate the transaction. By default, the system is configured to evaluate a pacs.002 transaction that concludes a transaction initiated from a pain.001 or pacs.008 message with a status response.
796793

797-
Unlike the processor configuration documents, the network map does not contain an explicit configuration version [Ref 2](#ref-2). Instead, the network map contains an attribute to identify the current active network map being used to perform evaluations:
794+
Unlike the processor configuration documents, the network map does not contain an explicit configuration version[^2]. Instead, the network map contains an attribute to identify the current active network map being used to perform evaluations:
798795

799796
```
800797
"active": true
@@ -814,19 +811,13 @@ The active network map ultimately defines the scope of a particular evaluation,
814811

815812
[Top](#configuration-management)
816813

817-
# References
818-
819-
# Ref 1
820-
We have found during our performance testing that the text-based descriptions in our processor results undermines the performance gains we achieved with our ProtoBuff implementation. We will be removing the unabridged reason and processor descriptions from the configuration documents in favor of shorter look-up codes that will then also be used to introduce regionalized/language-specific descriptions.
814+
[^1]: We have found during our performance testing that the text-based descriptions in our processor results undermines the performance gains we achieved with our ProtoBuff implementation. We will be removing the unabridged reason and processor descriptions from the configuration documents in favor of shorter look-up codes that will then also be used to introduce regionalized/language-specific descriptions.
821815

822816

823-
# Ref 2
824-
An explicit version reference has been planned for development to make it easier for an operator to link an evaluation result to the specific originating network map.
817+
[^2]: An explicit version reference has been planned for development to make it easier for an operator to link an evaluation result to the specific originating network map.
825818

826819

827820

828-
# Ref 3
829-
In its default deployment, the system contains a single version of the “core” system processors (the typology processor and TADProc) at a time. Though it is possible to deploy and maintain multiple parallel versions of these processors and manage routing to these processors through the network map, this guide will only focus on singular core processors for now.
821+
[^3]: In its default deployment, the system contains a single version of the “core” system processors (the typology processor and TADProc) at a time. Though it is possible to deploy and maintain multiple parallel versions of these processors and manage routing to these processors through the network map, this guide will only focus on singular core processors for now.
830822

831-
# Ref 4
832-
Before our implementation of NATS, Tazama processors were implemented as RESTful microservices. The `host` attributes in the network map contained the URL where the processors could be addressed. With our initial implementation of NATS, the routing information was moved into environment variables that were read into the processors when they were deployed, or restarted in the event of a processor failure. We have now removed the need to specify the host property for a processor - the routing is automatically determined from the network map at processor startup - see [https://github.com/frmscoe/General-Issues/issues/310](https://github.com/frmscoe/General-Issues/issues/310) for details.
823+
[^4]: Before our implementation of NATS, Tazama processors were implemented as RESTful microservices. The `host` attributes in the network map contained the URL where the processors could be addressed. With our initial implementation of NATS, the routing information was moved into environment variables that were read into the processors when they were deployed, or restarted in the event of a processor failure. We have now removed the need to specify the host property for a processor - the routing is automatically determined from the network map at processor startup - see [https://github.com/frmscoe/General-Issues/issues/310](https://github.com/frmscoe/General-Issues/issues/310) for details.

Product/event-director.md

+1
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,4 @@ Using the list of unique rules from step 2.4, the Event Director invokes all the
119119
- Network sub-map (the portion of the network map that defines the in-scope rules and typologies)
120120

121121
See the page on [processor results propagation](https://github.com/frmscoe/docs/blob/main/Product/processor-results-propagation.md) for more information on the payload composition and propagation from one processor to the next.
122+

0 commit comments

Comments
 (0)