You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: Community/Tazama-Contribution-Guide.md
+6-6
Original file line number
Diff line number
Diff line change
@@ -160,7 +160,7 @@ From a DevOps perspective, we make use of the following tools:
160
160
-[Mermaid.js](http://mermaid.js.org/#/) for markdown-embedded diagrams in GitHub
161
161
-[Atlassian Confluence](https://www.atlassian.com/software/confluence) is (currently) hosting our project documentation at <https://frmscoe.atlassian.net/wiki/spaces/FRMS/overview>
162
162
-[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)
164
164
165
165
[Top](#contribution-guide)
166
166
@@ -384,7 +384,7 @@ Follow the steps below to get the `Rule Executer` on your operating table:
384
384
385
385
8. Sending messages to the microservice processor via the NATS REST Proxy
386
386
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.
388
388
389
389
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:
390
390
@@ -428,7 +428,7 @@ Read the [Product Overview](/README.md) for a detailed overview of the system.
428
428
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:
429
429
430
430
- The Transaction Monitoring Service (TMS) API
431
-
- The Channel Router and Setup Processor (CRSP)
431
+
- The Event Director (ED)
432
432
- The Rule Executor (the rule processor wrapper function)
433
433
- Rule 901, a sample rule
434
434
- The Typology Processor
@@ -454,14 +454,12 @@ flowchart TB
454
454
F -->|Push| G[5. Create Pull Request]
455
455
G -->|Review| H[6. Code Review]
456
456
H -->|Approve| I{7. Merge PR}
457
-
I -->|Merge to Main| J[8. Close Issue]
457
+
I -->|Merge to Dev| J[8. Close Issue]
458
458
J --> K[9. Deploy to Production]
459
459
K --> L[10. Monitor & Feedback]
460
460
H -->|Request Changes| D
461
461
```
462
462
463
-
1. Fork the repository you want to work on
464
-
465
463
[Top](#contribution-guide)
466
464
467
465
## 5. Making and Submitting Contributions
@@ -487,6 +485,8 @@ Best practices for making changes.
487
485
488
486
**Code Documentation** – Electronic documentation has been auto-generated (where available) and has been checked for correctness. Also have sufficient code comments. [Developer] + [PR Approver]
489
487
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
+
490
490
**\*Release Notes / Version Control** - TODO Aaron - figure out what greater ML does - check this
491
491
492
492
**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]
-[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
In the example in this guide, the location images for this repository were saved here
17
+
18
+
.
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. .
24
+
25
+
**1. Access the website https://www.drawio.com/ and click on `Start` button.**
Copy file name to clipboardexpand all lines: Product/configuration-management.md
+15-24
Original file line number
Diff line number
Diff line change
@@ -36,11 +36,6 @@
36
36
-[3.1. Introduction and Basics](#31-introduction-and-basics)
37
37
-[3.2. Configuration version management of processors](#32-configuration-version-management-of-processors)
38
38
-[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)
44
39
45
40
# TL;DR
46
41
@@ -60,7 +55,7 @@ Configuration documents can be uploaded to the system using the ArangoDB API dep
60
55
61
56
[Top](#configuration-management)
62
57
63
-
# 1\. Overview of the detection methodology
58
+
# 1. Overview of the detection methodology
64
59
65
60
The core detection capability within the system is distributed across three distinct steps in the end-to-end evaluation flow.
66
61
@@ -105,7 +100,7 @@ In this document, we will discuss how the various configuration documents are ex
105
100
106
101
[Top](#configuration-management)
107
102
108
-
# 2\. Configuration Management
103
+
# 2. Configuration Management
109
104
110
105
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.
111
106
@@ -235,7 +230,9 @@ Each exit condition contains the same attributes:
235
230
|**Attribute**|**Description**|
236
231
| --- | --- |
237
232
|`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
+
239
236
240
237
#### The `.err` exit condition
241
238
@@ -303,7 +300,7 @@ Each rule result band contains the same information:
303
300
|`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. |
304
301
|`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. |
305
302
|`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]|
307
304
308
305
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:
309
306
@@ -356,7 +353,7 @@ Each rule result case contains the same information:
356
353
| --- | --- |
357
354
|`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. |
358
355
|`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]|
360
357
361
358
### Complete example of a rule processor configuration
362
359
@@ -670,9 +667,9 @@ The network map “header” contains metadata that describes the network map. T
670
667
671
668
### The messages object
672
669
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]:
674
671
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]
676
673
677
674
*`cfg` is the unique version of the deployed TADProc that will be used to conclude the evaluation of the transaction.
678
675
@@ -696,7 +693,7 @@ The `typologies` object is a nested array object inside the transaction element
696
693
697
694
The typology object array contains the following attributes:
698
695
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.
700
697
701
698
*`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.
702
699
@@ -794,7 +791,7 @@ Once a configuration document has been created or updated and uploaded to the co
794
791
795
792
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.
796
793
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:
798
795
799
796
```
800
797
"active": true
@@ -814,19 +811,13 @@ The active network map ultimately defines the scope of a particular evaluation,
814
811
815
812
[Top](#configuration-management)
816
813
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.
821
815
822
816
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.
825
818
826
819
827
820
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.
830
822
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.
Copy file name to clipboardexpand all lines: Product/event-director.md
+1
Original file line number
Diff line number
Diff line change
@@ -119,3 +119,4 @@ Using the list of unique rules from step 2.4, the Event Director invokes all the
119
119
- Network sub-map (the portion of the network map that defines the in-scope rules and typologies)
120
120
121
121
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.
0 commit comments