From 284ec575a010a67f28d7a6169dd228cb5d1f1e7e Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Wed, 2 Oct 2024 09:29:07 +0100 Subject: [PATCH 01/18] initial categorisation --- content/en/blog/releases/2024.X/2024.7.md | 2 - content/en/blog/releases/2024.X/2024.9.md | 293 ++++++++++++++++++++++ 2 files changed, 293 insertions(+), 2 deletions(-) create mode 100644 content/en/blog/releases/2024.X/2024.9.md diff --git a/content/en/blog/releases/2024.X/2024.7.md b/content/en/blog/releases/2024.X/2024.7.md index be77755dc..f4a190353 100644 --- a/content/en/blog/releases/2024.X/2024.7.md +++ b/content/en/blog/releases/2024.X/2024.7.md @@ -85,8 +85,6 @@ Finally, the [Product Portal][] includes updates related to: | {{% ctx %}} Encryptor | 3.1.0.24330 | Yes | Minor | N/A | | | {{% ctx %}} Flows Upgrader | 1.2.1.24330 | Yes | Minor | N/A | | - - ### Features #### Performance diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md new file mode 100644 index 000000000..b37a32c26 --- /dev/null +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -0,0 +1,293 @@ +--- +title: "2024.9" +linkTitle: "2024.9" +date: 2024-08-12 +author: Paul Arnold ([@paulmarnold](https://twitter.com/paulmarnold)) +--- + +## Summary + +The 2024.9 [Release][] is now available. + +## Download Artefacts + +Installation artefacts can be requested by raising a case in the [{{% ctx %}} Service Portal][]. + +## Release Notes + +### Overview + +2024.9 is the second [Release][] of the next generation of {{% ctx %}} and improves on the [2024.7][] release in the following areas: + +* Availability +* Capability + + + + + + + + + + + + +* Cost of ownership +* Documentation + + + + + + + + + + + TODO + TODO + +* Installation + + + + + + + + + +* Observability +* Performance +* Third-Party Support +* Scalability +* Security + + + + +* Usability + + + + + + +* Ignore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +### Components + +| Release Component | Version | Updated | Update Type | Breaking Change | Notes | +|--------------------------------------------------------------------------------|---------------|---------|-------------|-----------------|--------| +| [{{% ctx %}} Innovation Core Application][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} API Gateway Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Authorisation Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Concurrency Management Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Configuration Management Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Data Storage Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Execution Management Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Licence Management Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Package Management Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Provisioning Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Scheduling Service][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Triggers Service][] | TODO | TODO | TODO | TODO | TODO | +| [{{% ctx %}} Innovation Execution Application][] | TODO | TODO | TODO | TODO | TODO | +|     > [{{% ctx %}} Execution Service][] | TODO | TODO | TODO | TODO | TODO | +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | TODO | TODO | TODO | TODO | +| [{{% ctx %}} Blocks Package][Blocks] | TODO | TODO | TODO | TODO | TODO | +| [{{% ctx %}} Interaction Portal][Interaction Portal] | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} App Server Install Scripts | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} Web App Server Install Scripts | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} Licence Fingerprint Generator | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} Encryption Key Generator | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} Encryptor | TODO | TODO | TODO | TODO | TODO | +| {{% ctx %}} Flows Upgrader | TODO | TODO | TODO | TODO | TODO | + +### Features + +### Bug Fixes + +### Breaking Changes + +### Known Limitations + +## Version Support + +### Operating Systems + +| OS Type | Supported Versions | +|---------|---------------------------------------------------| +| Windows | | +| Linux | Linux is not currently supported | + +### 7.X Compatibility + +| 7.X Version | Is compatible? | Notes | +|-------------|----------------|----------------------------------------------| +| 7.2 | Yes | | +| 7.1 | No | Need to upgrade 7.1 to 7.2 for compatibility | +| 7.0 | No | Need to upgrade 7.0 to 7.2 for compatibility | + +### Flow Compatibility + +| Release | Compatibility Version | +|---------|-----------------------| +| 2024.9 | TODO | +| 2024.7 | 31.24311 | +| 2024.5 | 31.24311 | +| 2024.3 | 30 | + +## Install Instructions + +If you are installing a new 2024.9 platform or adding it to an existing 7.2 Installation see the guidance below; otherwise, if you are upgrading from an existing 2024.7 platform refer to the [Upgrade Instructions][]. + +Installing {{% ctx %}} Only: + +* [Multiple Server - With HA][Innovation Only - Multiple Server - With HA] +* [Single Server - Without HA][Innovation Only - Single Server - Without HA] + +Adding {{% ctx %}} to a 7.2 Installation: + +* [Multiple Server - With HA][Adding Innovation to a 7.2 Installation - Multiple Server - With HA] +* [Single Server - Without HA][Adding Innovation to a 7.2 Installation - Single Server - Without HA] + +## Upgrade Instructions + +If you are upgrading from an existing 2024.7 platform see the guidance below: + +Upgrading {{% ctx %}}: + +* [Multiple Server - With HA][Upgrade - Multiple Server - With HA] +* [Single Server - Without HA][Upgrade - Single Server - Without HA] + +## Upcoming Releases + +Releases are currently forecast to be made available on: + +| Release | Release Type | Forecast Release Date | +|---------|----------------|------------------------------------| +| 2024.9 | [Release][] | Week commencing 7th October 2024 | +| 2024.11 | [Fast Track][] | Week commencing 2nd December 2024 | +| 2025.1 | [Fast Track][] | Week commencing 10th February 2024 | + +[{{% ctx %}} Innovation Core Application]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.MainDoc" version="2024.9" >}} +[{{% ctx %}} API Gateway Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ApiGatewayService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Authorisation Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.AuthorisationService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Concurrency Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ConcurrencyManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Configuration Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ConfigurationManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Data Storage Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Execution Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ExecutionManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Licence Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.LicenceManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Package Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.PackageManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Provisioning Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ProvisioningService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Scheduling Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.SchedulingService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Triggers Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.TriggersService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Innovation Execution Application]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.MainDoc" version="2024.9" >}} +[{{% ctx %}} Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" version="2024.9" >}} +[Interaction Portal]: {{< url path="Cortex.Guides.CortexInteractionPortal.MainDoc" version="2024.9" >}} + +[Performance]: {{< ref "#performance" >}} +[Reduce the number of license check calls]: {{< ref "#reduced-the-number-of-license-check-calls" >}} +[Reduce memory usage of the Package Management Service]: {{< ref "#reduce-memory-usage-of-the-package-management-service" >}} +[Expression editor in {{% ctx %}} Studio leaks memory]: {{< ref "#expression-editor-in-cortex-studio-leaks-memory" >}} +[Security]: {{< ref "#security" >}} +[Redact any value in logs that has the format of an encrypted text]: {{< ref "#redact-any-value-in-logs-that-has-the-format-of-an-encrypted-text" >}} +[Request user has been added to API Gateway HTTPEvent logs]: {{< ref "#request-user-has-been-added-to-api-gateway-httpevent-logs" >}} +[Password redaction not always occurring]: {{< ref "#password-redaction-not-always-occurring" >}} +[Custom names supported for default Tenant and System]: {{< ref "#custom-names-supported-for-default-tenant-and-system" >}} +[support for installing multiple {{% ctx %}} Gateway instances on the same Web App Server]: {{< ref "#support-for-installing-multiple-cortex-gateway-instances-on-the-same-web-app-server" >}} +[{{% ctx %}} Gateway]: {{< ref "#cortex-gateway" >}} +[Improved Home page loading placeholder]: {{< ref "#improved-home-page-loading-placeholder" >}} +[Improved Search bar styling]: {{< ref "#improved-search-bar-styling" >}} +[Engine]: {{< ref "#engine" >}} +[Flow with expression sometimes fails to execute with a KeyNotFoundException]: {{< ref "#flow-with-expression-sometimes-fails-to-execute-with-a-keynotfoundexception" >}} +[Product Portal]: {{< ref "#product-portal" >}} +[Wireless Blocks section]: {{< ref "#wireless-blocks" >}} +[Execute Data Command Block section]: {{< ref "#execute-data-command-block" >}} +[Scope and ScopeDefinition]: {{< ref "#scope-and-scopedefinition" >}} +[Block Icons]: {{< ref "#block-icons" >}} +[upgrade section]: {{< ref "#upgrade" >}} +[Incorrect link in Multiple Server Install Web Application Prerequisites]: {{< ref "#incorrect-link-in-multiple-server-install-web-application-prerequisites" >}} +[Scope data type has been renamed]: {{< ref "#scope-data-type-has-been-renamed" >}} + +[Upgrade Instructions]: {{< ref "#upgrade-instructions" >}} +[Breaking - Scope data type has been renamed]: {{< ref "#scope-data-type-has-been-renamed-1" >}} +[Breaking - Flows are now compressed in the Package Management Service]: {{< ref "#flows-are-now-compressed-in-the-package-management-service" >}} + +[Blocks]: {{< url path="Cortex.Reference.Blocks.MainDoc" version="2024.9" >}} + +[Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} + +[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc" version="2024.9">}} +[ScopeDefinition]: {{< url path="Cortex.Reference.DataTypes.Scopes.ScopeDefinition.MainDoc" version="2024.9">}} + +[Wireless Blocks]: {{< url path="Cortex.Reference.Blocks.Wireless.MainDoc" version="2024.9" >}} +[Wireless Receiver]: {{< url path="Cortex.Reference.Blocks.Wireless.WirelessReceiver.WirelessReceiver.MainDoc" version="2024.9" >}} +[Wireless Sender]: {{< url path="Cortex.Reference.Blocks.Wireless.WirelessSender.WirelessSender.MainDoc" version="2024.9" >}} +[WirelessReceiverBlockReference]: {{< url path="Cortex.Reference.DataTypes.Wireless.WirelessReceiverBlockReference.MainDoc" version="2024.9" >}} +[WirelessReceiverBlockNotFoundException]: {{< url path="Cortex.Reference.Exceptions.Wireless.WirelessReceiverBlockNotFoundException.MainDoc" version="2024.9" >}} + +[Execute Data Command Block]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" version="2024.9" >}} +[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc" version="2024.9" >}} +[LogonType]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.LogonType" version="2024.9" >}} + +[Innovation Only - Single Server - Without HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.SingleServerWithoutHA.MainDoc" version="2024.9" >}} +[Innovation Only - Multiple Server - With HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.MainDoc" version="2024.9" >}} + +[Adding Innovation to a 7.2 Installation - Single Server - Without HA]: {{< url path="Cortex.GettingStarted.OnPremise.AddInnovationTo72.SingleServerWithoutHA.MainDoc" version="2024.9" >}} +[Adding Innovation to a 7.2 Installation - Multiple Server - With HA]: {{< url path="Cortex.GettingStarted.OnPremise.AddInnovationTo72.MultipleServerWithHA.MainDoc" version="2024.9" >}} +[Import Certificate Manually]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.ImportCertificateManuallyNew" version="2024.9" >}} +[Perform Cortex Gateway Installation]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.GatewayInstallation" version="2024.9" >}} +[Install Flow Debugger]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.DebuggerInstallation" version="2024.9" >}} + +[upgrade steps]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.MainDoc" version="2024.9" >}} +[upgrade flows steps]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.Advanced.UpgradeFlows" version="2024.9" >}} +[Upgrade - Single Server - Without HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.SingleServerWithoutHA.MainDoc" version="2024.9" >}} +[Upgrade - Multiple Server - With HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.MultipleServerWithHA.MainDoc" version="2024.9" >}} + +[{{% ctx %}} Studio]: {{< url path="Cortex.Guides.Studio.MainDoc" version="2024.9" >}} + +[{{% ctx %}} Service Portal]: {{< url path="Cortex.ServicePortal.MainDoc" version="2024.9" >}} + +[Fast Track]: {{< url path="Cortex.Reference.Glossary.F-J.FastTrack" version="2024.9" >}} +[Release]: {{< url path="Cortex.Reference.Glossary.P-T.Release" version="2024.9" >}} + +[2024.7]: {{< url path="Cortex.Blogs.Releases.2024.7.MainDoc" version="2024.9" >}} From ff3c4b8ad49d255624130241d0f2d33dc258927b Mon Sep 17 00:00:00 2001 From: Cortex-DMS Date: Wed, 2 Oct 2024 10:55:04 +0100 Subject: [PATCH 02/18] Started to add output property decomposition info --- .../what-is-a-block-property.md | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md index db71f8032..0763e4f89 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md @@ -37,7 +37,7 @@ The icons used for Input properties are dark blue to distinguish them from [Outp ### Output Properties -Output properties are used to save values from a [block][]. These properties will saved to a variable during the block's execution. +Output properties are used to save values from a [block][]. These properties can be saved to a variable or decomposed to be saved into multiple variables during the block's execution. Values from Output properties can be [discarded][Discarding Outputs], this means they will not be saved to any variable. @@ -51,6 +51,37 @@ Output properties can be configured using the following editors: The icon used for Output properties are light blue to distinguish them from [Input Properties][]. +#### Decomposing Output Properties + +Output values can be decomposed to allow the saving of different parts of the value to different variables. + +To decompose an output value, the output property will need to be set to an expression. As an example, an output value value contains a Json object, e.g: + +``` json +{ + "company": { + "name": "Company Name", + "department": [ + { + "name": "HR", + "employees": [ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } + ] + } + ] + } +} +``` + +To decompose this structure and store a part of the value to a variable, e.g. the syntax would be + #### Discarding Outputs Output values can be discarded, instead of saving them to a variable. From f2677b58e86f91f43cd920614044fec765f64eda Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Thu, 3 Oct 2024 15:56:27 +0100 Subject: [PATCH 03/18] initial documentation of features and bugs --- content/en/blog/releases/2024.X/2024.9.md | 425 +++++++++++++++++----- 1 file changed, 338 insertions(+), 87 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index b37a32c26..da35ed0a1 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -19,99 +19,58 @@ Installation artefacts can be requested by raising a case in the [{{% ctx %}} Se 2024.9 is the second [Release][] of the next generation of {{% ctx %}} and improves on the [2024.7][] release in the following areas: -* Availability * Capability - - - - - - - - - - - - -* Cost of ownership -* Documentation - - - - - - - - - - - TODO - TODO - -* Installation - - - - - - - - - * Observability -* Performance -* Third-Party Support * Scalability * Security - - - - * Usability - - - - - - -* Ignore - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +* Third-Party Support +* Installation +* Upgrade +* Documentation + +This release introduces multiple new feature to the {{% ctx %}} platform: + +* the [concept of Process and Activity][], which are types of [Flow][], has now been introduced to {{% ctx %}} Gateway. +* [Saving Output Properties to multiple variables][] is now supported. +* a new [built-in _executionContext variable][] has been added to the [Flow Engine][] which contains the initiator. +* a new [Proxy to the Legacy Flow API][] has been added to the platform. + +[Observability][] has been improved by [adding block logging to API Blocks][add block logging to API blocks]. + +Optimisation to [Scalability][] has also been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduce the total number of NServiceBus endpoints and RabbitMQ queues]. + +We increased the [Security][] of the platform by: + +* [upgrading the OpenSSL version][Upgrade OpenSSL] shipped with the platform. +* added [Multi-domain certificates support][]. +* a [CortexManagementUser is now created during upgrade][Create CortexManagementUser during upgrade]. +* [Added validation to legacy Flows API][] to prevent [Path Traversal][]. +* the removal of [refresh token cookie on sign out][Bearer Token not Invalidated after Logout]. +The [Usability][] of the platform has been improved by: + +* renaming the [Flows Charm to Dev and changing the icon][Rename Flows Charm to Dev and change icon] +* renaming the [Settings Charm to Admin and changing the icon][Rename Settings Charm to Admin and change icon]. + +[Third Party Support][] has been improved by upgrading the platform to [.NET 8][Upgrade .Net]. + +The [Installation][] now unblocks all files before running if the operating system has `Windows Defender SmartScreen` enabled. + + +The [Upgrade][] process has been improved by: + +* upgrading the [Execution Service when the engine version is unchanged][Execution Service should be upgraded when the engine version is unchanged]. +* handling [Service Fabric lifecycle events][Execution Services should handle Service Fabric lifecycle events so flows end gracefully within allowed period]. + +Finally, the [Documentation][] includes updates related to: + +* new concepts such as [Process and Activities][] as well as [Decomposition of Output properties][]. +* upgrade instructions for [Observability][Upgrade instructions for Observability] and the [Interaction Portal][Upgrade instruction for Interaction Portal]. +* [Preventing deadlocks][] when using semaphores. +* [updating screenshots][] to reflect the new branding. +* [Flow compatibility version][] in release notes. +* [general improvements to the documentation][] ### Components @@ -143,8 +102,300 @@ Installation artefacts can be requested by raising a case in the [{{% ctx %}} Se ### Features +#### Capability + +##### Process and Activity + +The [concept of Process and Activity][Process and Activity] has been introduced to the {{% ctx %}} Gateway. This allows for the creation of [Process][] and [Activity][] flows. +[Processes][] are a type of [Flow][] that can contain multiple [Activities][] and are used to model complex business processes. [Activities][] are a type of [Flow][] that can be used to model simple tasks or actions. + + + + + + + + +##### Saving Output Properties to multiple variables + +It is now possible to use the [Expression editor][] for output variables. +This enabled us to provide a new syntax allowing saving properties of an output variable to multiple variables using [decomposition of output properties][]. + + + +##### Execution context + +A new [built-in _executionContext variable][] has been added to the [Flow Engine][]. +The _executionContext variable contains the initiator of the flow execution, as well as an Extensions property that can be used to store additional information. + + COMMITTED + +##### Proxy to the Legacy Flow API + +A new [Proxy to the Legacy Flow API][] has been added to the platform. This allows for the execution of flows using the legacy-style API. + + COMMITTED + NEW + + +The [API][] includes the following legacy-style endpoints: + +* Encrypt +* Run Flow +* Run Flow Asynchronously + + NEW + COMMITTED + + + +The [API][] also includes new management endpoint to map between a FlowName and specific package versions: + +* get all mappings +* delete all mappings +* add single mapping +* remove single mapping + + NEW + + + NOT DONE THIS RELEASE + +#### Observability + +##### API blocks logging + +[Block logging][] has been added to API blocks. This allows for the logging of the some properties values, as well as the inputs and outputs, for the following blocks: + +* [Execute Data Command][] + * [CommandText][] of the [Command][] + * [Parameters][] of the [Command][] +* [Execute HTTP Request][] + * [HTTPRequest][] + * [HTTPResponse][] +* [Execute SOAP Request][] + * [SOAPRequest][] + * [SOAPResponse][] +* [Execute Powershell Script][] + * [Script][] + * [Parameters][] + * [Outputs][] + * [Records][] +* [Execute SSH Command][] + * [Command][] + * [Response][] + * [SSH Logs][] + + + + NEW + +#### Scalability + +##### Reduction of total number of NServiceBus endpoints and RabbitMQ queues + +An exercise has been undertaken to reduce the total number of NServiceBus endpoints and RabbitMQ queues in the platform. +This has been achieved by consolidating the endpoints and queues where possible. + + + + COMMITTED + COMMITTED + COMMITTED + + COMMITTED + + COMMITTED + COMMITTED + COMMITTED + + + + +#### Security + +##### Upgrade OpenSSL + +The OpenSSL version shipped with the platform has been upgraded to the latest version. + + + +##### Multi-domain certificates support + +Support for Multi Domain Certificates in HA deployment has been confirmed. + + + +##### Create CortexManagementUser during upgrade + +A Management User for RabbitMQ is now be created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. + + + +##### Added validation to legacy Flows API + +The legacy flows API now includes validation to prevent Path Traversal attacks. This has been by validating the syntax of the provided flow, subtask and group names. + + + +##### Invalidate refresh token cookie on sign out + +The refresh token cookie is now invalidated when a user signs out of {{% ctx %}} Gateway, preventing any further use of the token after the user has logged out. + + + +#### Usability + +##### Changed terminology and icons on {{% ctx %}} Gateway + +The Flows Charm has been renamed to Dev and the icon has been changed to reflect this. +The Settings Charm has been renamed to Admin and the icon has been changed to reflect this. + + + + +#### Third-Party Support + +##### Upgrade to .NET 8 + +The platform has been upgraded to [.NET 8][Upgrade .Net], allowing us to go to the latest version of [Service Fabric][]. +This was required as .NET 6 will be out of support in November. + +{{% alert title="Note" %}} +Upgrade excludes {{% ctx %}} Gateway as currently on .NET Framework 4.7.2 which is not compatible with .NET 8, and still under long term support. +{{% /alert %}} + + Speak to Sam + +##### Upgrade to the latest version of Service Fabric + +The latest version of Service Fabric has been included in the artefacts. +During upgrade, the Service Fabric cluster version will be upgrade to the packaged version in the artefacts. + + + +#### Installation + +##### Support installation when files are blocked by the operating system + +The installation scripts have been amended to unblock files before running if the operating system has file blocking enabled. +Newly copied files, such as dlls packaged with the {{% ctx %}} installer may be blocked if the operating system uses `Windows Defender SmartScreen`. + + + +#### Upgrade + +##### Execution Service is upgraded when the engine version is unchanged + +The Execution Service will now be upgraded when the engine version is unchanged. This is to ensure the upgrade works, including edge cases such as patches. + + + +##### Handling of the Execution Services lifecycle events + +The Execution Services should handle Service Fabric lifecycle events so flows end gracefully within the allowed period. +This includes a `Graceful Period timeout` and a `Cancel Period Timeout` which are configurable. + + + + NEW + +#### Documentation + +##### Process and Activities + +The [What is a Flow][] documentation has been updated to include information on the new concepts of [Process and Activities][]. + NEW + +##### Decomposition of Output properties + +The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][] feature. + NEW + +##### Preventing deadlocks when using semaphores + +A new section has been added to the documentation explaining how to [prevent deadlocks][] when using semaphores. + + +###### Updated screenshots + +The documentation has been updated to reflect the new branding, including [Blocks][] icons and various [{{% ctz %}} gateway][] screenshots. + + +###### Flow compatibility version introduced + +The [Flow compatibility version][] has been added to the release notes to help users understand which version of the Flow Engine is compatible with the release. + + +###### General improvements to the documentation + +Various improvements have been made to the documentation to improve the overall quality and readability. + + + + + + ### Bug Fixes +#### Capability + +##### {{% ctx %}} Gateway encryptor not aligned with Service Fabric + +The Encryptor has been aligned between the gateway and service fabric, ensuring that the encrypted value is the same way. +This ensures the decryption falls back to the default key if it fails with the tenant key. + + + + +#### Observability + +#### Scalability + +#### Security + +#### Usability + +#### Third-Party Support + +#### Installation + +#### Upgrade + +##### Certificate update does not work after upgrade + +A bug has been fixed which prevented the update of certificates after an upgrade. + + + +#### Documentation + +##### Missing Platform property in Log Event documentation + +The Platform property the the Log Event documentation was missing. This has been added to the documentation. + + ### Breaking Changes ### Known Limitations From 8f3ea2d9592646dcae95a5ae3b0188cfac2f7509 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Mon, 7 Oct 2024 15:56:14 +0100 Subject: [PATCH 04/18] initial review with PO --- content/en/blog/releases/2024.X/2024.9.md | 325 +++++++++++----------- data/urls.toml | 3 + 2 files changed, 170 insertions(+), 158 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index da35ed0a1..9506077e7 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -1,7 +1,7 @@ --- title: "2024.9" linkTitle: "2024.9" -date: 2024-08-12 +date: 2024-10-07 author: Paul Arnold ([@paulmarnold](https://twitter.com/paulmarnold)) --- @@ -29,76 +29,75 @@ Installation artefacts can be requested by raising a case in the [{{% ctx %}} Se * Upgrade * Documentation -This release introduces multiple new feature to the {{% ctx %}} platform: +This release introduces multiple new features to the {{% ctx %}} platform: -* the [concept of Process and Activity][], which are types of [Flow][], has now been introduced to {{% ctx %}} Gateway. +* The concept of [Process and Activity][], which are types of [Flow][], has now been introduced to {{% ctx %}} Gateway. * [Saving Output Properties to multiple variables][] is now supported. -* a new [built-in _executionContext variable][] has been added to the [Flow Engine][] which contains the initiator. -* a new [Proxy to the Legacy Flow API][] has been added to the platform. - -[Observability][] has been improved by [adding block logging to API Blocks][add block logging to API blocks]. - -Optimisation to [Scalability][] has also been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduce the total number of NServiceBus endpoints and RabbitMQ queues]. +* A new built-in [execution context variable][] has been added to the Flow Engine which contains the initiator. +* A new [Proxy to the {{% ctx %}} 7 Flow API][] has been added to the platform. +[Observability][] has been improved by [adding logging to blocks that communicates with external systems][Logging added to blocks that communicates with external systems]. +\ +Optimisation to [Scalability][] has also been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduction of total number of NServiceBus endpoints and RabbitMQ queues]. +\ We increased the [Security][] of the platform by: -* [upgrading the OpenSSL version][Upgrade OpenSSL] shipped with the platform. -* added [Multi-domain certificates support][]. -* a [CortexManagementUser is now created during upgrade][Create CortexManagementUser during upgrade]. -* [Added validation to legacy Flows API][] to prevent [Path Traversal][]. -* the removal of [refresh token cookie on sign out][Bearer Token not Invalidated after Logout]. +* [Upgrading the OpenSSL version][Upgrade OpenSSL] shipped with the platform. +* Added [Multi-domain certificates support][]. +* A [CortexManagementUser for RabbitMQ is now created during upgrade][New CortexManagementUser added to manage RabbitMQ queues]. +* [Server-side validation added to {{% ctx %}} Gateway API][] to prevent [Path Traversal][] attacks. +* Removal of the [refresh token cookie on sign out][remove refresh token cookie on sign out]. The [Usability][] of the platform has been improved by: -* renaming the [Flows Charm to Dev and changing the icon][Rename Flows Charm to Dev and change icon] -* renaming the [Settings Charm to Admin and changing the icon][Rename Settings Charm to Admin and change icon]. - -[Third Party Support][] has been improved by upgrading the platform to [.NET 8][Upgrade .Net]. - -The [Installation][] now unblocks all files before running if the operating system has `Windows Defender SmartScreen` enabled. - +* Renaming the [Flows Charm to Dev and changing the icon][Rename Flows Charm to Dev and change icon]. +* Renaming the [Settings Charm to Admin and changing the icon][Rename Settings Charm to Admin and change icon]. +[Third-party Support][] has been improved by [upgrading the platform to .NET 8][Upgrade to .NET 8]. +\ +[Installation][] when [files are blocked by the operating system][Support installation when files are blocked by the operating system] due to the `Zone.Identifier` is now supported. +\ The [Upgrade][] process has been improved by: -* upgrading the [Execution Service when the engine version is unchanged][Execution Service should be upgraded when the engine version is unchanged]. -* handling [Service Fabric lifecycle events][Execution Services should handle Service Fabric lifecycle events so flows end gracefully within allowed period]. +* Upgrading the [Execution Service when the engine version is unchanged][Execution Service is upgraded when the engine version is unchanged]. +* [Handling of the Execution Services lifecycle events][]. Finally, the [Documentation][] includes updates related to: -* new concepts such as [Process and Activities][] as well as [Decomposition of Output properties][]. -* upgrade instructions for [Observability][Upgrade instructions for Observability] and the [Interaction Portal][Upgrade instruction for Interaction Portal]. -* [Preventing deadlocks][] when using semaphores. -* [updating screenshots][] to reflect the new branding. -* [Flow compatibility version][] in release notes. -* [general improvements to the documentation][] +* New concepts such as [Process and Activities][] as well as [Decomposition of Output properties][]. +* [Preventing deadlocks when using semaphores][Prevent deadlocks when using semaphores]. +* [Updating screenshots][screenshots updated] to reflect the new branding. +* [Flow compatibility version][Flow compatibility version introduced] being added to the release notes. +* [General improvements to the documentation][]. ### Components | Release Component | Version | Updated | Update Type | Breaking Change | Notes | |--------------------------------------------------------------------------------|---------------|---------|-------------|-----------------|--------| -| [{{% ctx %}} Innovation Core Application][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} API Gateway Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Authorisation Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Concurrency Management Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Configuration Management Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Data Storage Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Execution Management Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Licence Management Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Package Management Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Provisioning Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Scheduling Service][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Triggers Service][] | TODO | TODO | TODO | TODO | TODO | -| [{{% ctx %}} Innovation Execution Application][] | TODO | TODO | TODO | TODO | TODO | -|     > [{{% ctx %}} Execution Service][] | TODO | TODO | TODO | TODO | TODO | -| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | TODO | TODO | TODO | TODO | -| [{{% ctx %}} Blocks Package][Blocks] | TODO | TODO | TODO | TODO | TODO | -| [{{% ctx %}} Interaction Portal][Interaction Portal] | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} App Server Install Scripts | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} Web App Server Install Scripts | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} Licence Fingerprint Generator | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} Encryption Key Generator | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} Encryptor | TODO | TODO | TODO | TODO | TODO | -| {{% ctx %}} Flows Upgrader | TODO | TODO | TODO | TODO | TODO | +| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Listeners Service][] | TODO | TODO | TODO | N/A | TODO | Waiting for AB +|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | TODO | TODO | Waiting for AB +| [{{% ctx %}} Blocks Package][Blocks] | TODO | Yes | Major | Yes | **review** Blocks are always breaking changes as the temporary loader needs updating in the debugger... | Waiting for AB +| [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | +| {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | +| {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | +| {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | TODO | TODO | +| {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | TODO | TODO | +| {{% ctx %}} Encryptor | 3.1.0.24330 | No | N/A | N/A | | +| {{% ctx %}} Flows Upgrader | 2.0.0.24350 | Yes | Major | TODO | TODO | ### Features @@ -106,8 +105,9 @@ Finally, the [Documentation][] includes updates related to: ##### Process and Activity -The [concept of Process and Activity][Process and Activity] has been introduced to the {{% ctx %}} Gateway. This allows for the creation of [Process][] and [Activity][] flows. -[Processes][] are a type of [Flow][] that can contain multiple [Activities][] and are used to model complex business processes. [Activities][] are a type of [Flow][] that can be used to model simple tasks or actions. +The [concept of Process and Activity][Process and Activity] has been introduced to the {{% ctx %}} Gateway. This allows for the creation of [Process][] and [Activity][] flows. +[Processes][] are a type of [Flow][] that can contain multiple [Activities][] and are used to model high-level business processes. +[Activities][] are a type of [Flow][] that can be used to model tasks or actions. @@ -118,54 +118,52 @@ The [concept of Process and Activity][Process and Activity] has been introduced ##### Saving Output Properties to multiple variables -It is now possible to use the [Expression editor][] for output variables. -This enabled us to provide a new syntax allowing saving properties of an output variable to multiple variables using [decomposition of output properties][]. +It is now possible to use the [Expression editor][] for output properties. +This provides a new [decomposition syntax][decomposition of output properties] allowing saving selected values from an output property to multiple variables. -##### Execution context +##### Execution context variable -A new [built-in _executionContext variable][] has been added to the [Flow Engine][]. -The _executionContext variable contains the initiator of the flow execution, as well as an Extensions property that can be used to store additional information. +A new [built-in _executionContext variable][] is now exposed in [processes and activities][process and activity]. +The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. - COMMITTED + -##### Proxy to the Legacy Flow API +##### Proxy to the {{% ctx %}} 7 Flow API -A new [Proxy to the Legacy Flow API][] has been added to the platform. This allows for the execution of flows using the legacy-style API. +A new proxy to the {{% ctx %}} 7 Flow [API][] has been added to to simplify migrating to the platform. This allows for the execution of flows using the same [API][] as the one used in {{% ctx %}} 7. - COMMITTED - NEW + + -The [API][] includes the following legacy-style endpoints: +The [API][] includes the following endpoints: * Encrypt * Run Flow * Run Flow Asynchronously - NEW - COMMITTED + + -The [API][] also includes new management endpoint to map between a FlowName and specific package versions: - -* get all mappings -* delete all mappings -* add single mapping -* remove single mapping - - NEW +The [API][] also includes new management endpoints to map between a FlowName and specific package versions: +* Get all mappings +* Add single mapping +* Remove single mapping +* Remove all mappings - NOT DONE THIS RELEASE + #### Observability -##### API blocks logging +##### Logging added to blocks that communicate with external systems -[Block logging][] has been added to API blocks. This allows for the logging of the some properties values, as well as the inputs and outputs, for the following blocks: +[Block logging][] has been added to blocks that communicate with external systems. +The following blocks and properties are logged: * [Execute Data Command][] * [CommandText][] of the [Command][] @@ -186,30 +184,7 @@ The [API][] also includes new management endpoint to map between a FlowName and * [Response][] * [SSH Logs][] - - - NEW + #### Scalability @@ -220,15 +195,15 @@ This has been achieved by consolidating the endpoints and queues where possible. - COMMITTED - COMMITTED - COMMITTED + + + - COMMITTED + - COMMITTED - COMMITTED - COMMITTED + + + @@ -238,117 +213,126 @@ This has been achieved by consolidating the endpoints and queues where possible. ##### Upgrade OpenSSL The OpenSSL version shipped with the platform has been upgraded to the latest version. - ##### Multi-domain certificates support -Support for Multi Domain Certificates in HA deployment has been confirmed. - +Support for Multi Domain Certificates in HA deployment is now supported. -##### Create CortexManagementUser during upgrade - -A Management User for RabbitMQ is now be created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. +##### New CortexManagementUser added to manage RabbitMQ queues +A new management user for RabbitMQ queues is now created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. -##### Added validation to legacy Flows API - -The legacy flows API now includes validation to prevent Path Traversal attacks. This has been by validating the syntax of the provided flow, subtask and group names. +##### Server-side validation added to {{% ctx %}} Gateway API +The {{% ctx %}} Gateway [API][] now includes server-side validation to prevent [Path Traversal][] attacks when creating new flows and groups. -##### Invalidate refresh token cookie on sign out - -The refresh token cookie is now invalidated when a user signs out of {{% ctx %}} Gateway, preventing any further use of the token after the user has logged out. +##### Remove refresh token cookie on sign out +The refresh token cookie is now removed when a user signs out of {{% ctx %}} Gateway, preventing any further use of the token after the user has logged out. #### Usability -##### Changed terminology and icons on {{% ctx %}} Gateway +##### Rename Flows Charm to Dev and change icon The Flows Charm has been renamed to Dev and the icon has been changed to reflect this. -The Settings Charm has been renamed to Admin and the icon has been changed to reflect this. - + +##### Rename Settings Charm to Admin and change icon + +The Settings Charm has been renamed to Admin and the icon has been changed to reflect this. -#### Third-Party Support +#### Third-party Support ##### Upgrade to .NET 8 -The platform has been upgraded to [.NET 8][Upgrade .Net], allowing us to go to the latest version of [Service Fabric][]. +The platform has been upgraded to [.NET 8][], allowing us to go to the latest version of [Service Fabric][]. This was required as .NET 6 will be out of support in November. {{% alert title="Note" %}} Upgrade excludes {{% ctx %}} Gateway as currently on .NET Framework 4.7.2 which is not compatible with .NET 8, and still under long term support. {{% /alert %}} - - Speak to Sam + ##### Upgrade to the latest version of Service Fabric The latest version of Service Fabric has been included in the artefacts. During upgrade, the Service Fabric cluster version will be upgrade to the packaged version in the artefacts. - #### Installation ##### Support installation when files are blocked by the operating system -The installation scripts have been amended to unblock files before running if the operating system has file blocking enabled. -Newly copied files, such as dlls packaged with the {{% ctx %}} installer may be blocked if the operating system uses `Windows Defender SmartScreen`. +The installation scripts have been amended to unblock files before running if the operating system has file being blocked by `Zone.Identifier`. +{{% alert title="Note" %}} +`Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. +{{% /alert %}} #### Upgrade +##### Support upgrade when files are blocked by the operating system + +The upgrade scripts have been amended to unblock files before running if the operating system has file being blocked by `Zone.Identifier`. + +{{% alert title="Note" %}} +`Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. +{{% /alert %}} + + ##### Execution Service is upgraded when the engine version is unchanged The Execution Service will now be upgraded when the engine version is unchanged. This is to ensure the upgrade works, including edge cases such as patches. - ##### Handling of the Execution Services lifecycle events -The Execution Services should handle Service Fabric lifecycle events so flows end gracefully within the allowed period. -This includes a `Graceful Period timeout` and a `Cancel Period Timeout` which are configurable. +The Execution Services handle Service Fabric lifecycle events allowing flows to end gracefully within a defined period. +This includes a `Graceful Period timeout` and a `Cancel Period Timeout`, both which default to 5 minutes, and are configurable. + +{{% alert title="Note" %}} +For more information on how to modify these values, please contact [{{% ctx %}} Service Portal][CORTEX Service Portal] for further assistance. +{{% /alert %}} - NEW + #### Documentation ##### Process and Activities The [What is a Flow][] documentation has been updated to include information on the new concepts of [Process and Activities][]. - NEW + COMMITTED ##### Decomposition of Output properties The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][] feature. NEW -##### Preventing deadlocks when using semaphores +##### Prevent deadlocks when using semaphores A new section has been added to the documentation explaining how to [prevent deadlocks][] when using semaphores. -###### Updated screenshots +##### Screenshots updated -The documentation has been updated to reflect the new branding, including [Blocks][] icons and various [{{% ctz %}} gateway][] screenshots. +Screenshots within the documentation has been updated to reflect the new branding, including [Blocks][] icons and various [{{% ctx %}} Gateway][] screenshots. -###### Flow compatibility version introduced +##### Flow compatibility version introduced -The [Flow compatibility version][] has been added to the release notes to help users understand which version of the Flow Engine is compatible with the release. +The [Flow compatibility version][] has been added to the release notes. -###### General improvements to the documentation +##### General improvements to the documentation Various improvements have been made to the documentation to improve the overall quality and readability. @@ -363,24 +347,12 @@ Various improvements have been made to the documentation to improve the overall ##### {{% ctx %}} Gateway encryptor not aligned with Service Fabric -The Encryptor has been aligned between the gateway and service fabric, ensuring that the encrypted value is the same way. -This ensures the decryption falls back to the default key if it fails with the tenant key. +The Encryptor has been aligned between the {{% ctx %}} Gateway and Service Fabric. +This ensures that encrypted values created with the default key can still be decrypted if a custom private key has been set. -#### Observability - -#### Scalability - -#### Security - -#### Usability - -#### Third-Party Support - -#### Installation - #### Upgrade ##### Certificate update does not work after upgrade @@ -475,7 +447,40 @@ Releases are currently forecast to be made available on: [{{% ctx %}} Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" version="2024.9" >}} [Interaction Portal]: {{< url path="Cortex.Guides.CortexInteractionPortal.MainDoc" version="2024.9" >}} -[Performance]: {{< ref "#performance" >}} +[Capability]: {{< ref "#capability" >}} +[Process and Activity]: {{< ref "#process-and-activity" >}} +[Saving Output Properties to multiple variables]: {{< ref "#saving-output-properties-to-multiple-variables" >}} +[execution context variable]: {{< ref "#execution-context-variable" >}} +[Proxy to the {{% ctx %}} 7 Flow API]: {{< ref "#proxy-to-the-legacy-flow-api" >}} +[Logging added to blocks that communicate with external systems]: {{< ref "#logging-added-to-blocks-that-communicate-with-external-systems" >}} +[Reduction of total number of NServiceBus endpoints and RabbitMQ queues]: {{< ref "#reduction-of-total-number-of-nservicebus-endpoints-and-rabbitmq-queues" >}} +[Upgrade OpenSSL]: {{< ref "#upgrade-openssl" >}} +[Multi-domain certificates support]: {{< ref "#multi-domain-certificates-support" >}} +[New CortexManagementUser added to manage RabbitMQ queues]: {{< ref "#new-cortexmanagementuser-added-to-manage-rabbitmq-queues" >}} +[Server-side validation added to {{% ctx %}} Gateway API]: {{< ref "#validation-added-to-legacy-flows-api" >}} +[Remove refresh token cookie on sign out]: {{< ref "#remove-refresh-token-cookie-on-sign-out" >}} +[Usability]: {{< ref "#usability" >}} +[Rename Flows Charm to Dev and change icon]: {{< ref "#rename-flows-charm-to-dev-and-change-icon" >}} +[Rename Settings Charm to Admin and change icon]: {{< ref "#rename-settings-charm-to-admin-and-change-icon" >}} +[Third-party Support]: {{< ref "#third-party-support" >}} +[Upgrade to .NET 8]: {{< ref "#upgrade-to-net-8" >}} +[Installation]: {{< ref "#installation" >}} +[Support installation when files are blocked by the operating system]: {{< ref "#support-installation-when-files-are-blocked-by-the-operating-system" >}} +[Upgrade]: {{< ref "#upgrade" >}} +[Execution Service is upgraded when the engine version is unchanged]: {{< ref "#execution-service-is-upgraded-when-the-engine-version-is-unchanged" >}} +[Handling of the Execution Services lifecycle events]: {{< ref "#handling-of-the-execution-services-lifecycle-events" >}} +[Documentation]: {{< ref "#documentation" >}} +[Process and Activities]: {{< ref "#process-and-activities" >}} +[Decomposition of Output properties]: {{< ref "#decomposition-of-output-properties" >}} +[Prevent deadlocks when using semaphores]: {{< ref "#prevent-deadlocks-when-using-semaphores" >}} +[Screenshots updated]: {{< ref "#screenshots-updated" >}} +[Flow compatibility version introduced]: {{< ref "#flow-compatibility-version-introduced" >}} +[General improvements to the documentation]: {{< ref "#general-improvements-to-the-documentation" >}} + +[Observability]: {{< ref "#observability" >}} +[Scalability]: {{< ref "#scalability" >}} +[Security]: {{< ref "#security" >}} + [Upgrade Instructions]: {{< ref "#upgrade-instructions" >}} [Breaking - Scope data type has been renamed]: {{< ref "#scope-data-type-has-been-renamed-1" >}} @@ -538,7 +543,11 @@ Releases are currently forecast to be made available on: [{{% ctx %}} Service Portal]: {{< url path="Cortex.ServicePortal.MainDoc" version="2024.9" >}} +[Flow]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow.MainDoc" version="2024.9" >}} + [Fast Track]: {{< url path="Cortex.Reference.Glossary.F-J.FastTrack" version="2024.9" >}} [Release]: {{< url path="Cortex.Reference.Glossary.P-T.Release" version="2024.9" >}} [2024.7]: {{< url path="Cortex.Blogs.Releases.2024.7.MainDoc" version="2024.9" >}} + +[Path Traversal]: {{< url path="Owasp.PathTraversal.MainDoc" version="2024.9" >}} diff --git a/data/urls.toml b/data/urls.toml index e0e07f054..81593cf48 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -2746,6 +2746,9 @@ BlockStatement = "https://blogs.oracle.com/connect/post/building-with-blocks" [OracleParameter] ParameterDirection = "https://learn.microsoft.com/en-us/dotnet/api/system.data.parameterdirection?view=net-8.0" +[Owasp] + [Owasp.PathTraversal] + MainDoc = "https://owasp.org/www-community/attacks/Path_Traversal" [Particular] [Particular.NServiceBus] MainDoc = "https://particular.net/nservicebus" From d1c264415b4ea8d49e3fba2a3e11919b76bbe079 Mon Sep 17 00:00:00 2001 From: Donna-Marie Smith Date: Tue, 8 Oct 2024 09:12:56 +0100 Subject: [PATCH 05/18] added additional information --- .../what-is-a-block-property.md | 70 ++++++++++++++----- 1 file changed, 52 insertions(+), 18 deletions(-) diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md index 0763e4f89..57a531f79 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md @@ -59,28 +59,62 @@ To decompose an output value, the output property will need to be set to an expr ``` json { - "company": { - "name": "Company Name", - "department": [ - { - "name": "HR", - "employees": [ - { - "name": "Joe Blogs", - "id": "101" - }, - { - "name": "Jane Doe", - "id": "102" - } - ] - } + "company": { + "name": "Company Name", + "department": [ + { + "name": "HR", + "employees": [ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } ] - } + } + ] + } } ``` -To decompose this structure and store a part of the value to a variable, e.g. the syntax would be +To decompose this structure and store a part of the value to a variable, e.g. to get the employees for the first department, the syntax would be: + +```text +{"$.company.department[0].employees": ($)VariableNameToStore} +``` + +In this example, this would set the variable to be: + +```json +{ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } +} +``` + +To set the variable to the last value `-1` should be used for the index: + +```text +{"$.company.department[0].employees[-1]": ($)VariableNameToStore} +``` + +In this example, this would set the variable to be: + +```json +{ + "name": "Jane Doe", + "id": "102" +} +``` #### Discarding Outputs From c9ad3a7c8666f2c95b46c9d872a4dcc14b0d245b Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Tue, 8 Oct 2024 14:43:59 +0100 Subject: [PATCH 06/18] before PO review 2 --- content/en/blog/releases/2024.X/2024.7.md | 2 + content/en/blog/releases/2024.X/2024.9.md | 284 +++++++++++++----- .../services/listeners-service/_index.md | 7 + .../fundamentals/flows/what-is-a-flow.md | 142 ++++++--- .../workspaces/what-is-a-workspace.md | 2 +- .../images/top-level-workspace-activity.svg | 4 + .../images/top-level-workspace-process.svg | 4 + .../2024.9/images/top-level-workspace.svg | 4 - data/urls.toml | 15 + 9 files changed, 346 insertions(+), 118 deletions(-) create mode 100644 content/en/docs/2024.9/Guides/cortex-innovation/core-application/services/listeners-service/_index.md create mode 100644 content/static/2024.9/images/top-level-workspace-activity.svg create mode 100644 content/static/2024.9/images/top-level-workspace-process.svg delete mode 100644 content/static/2024.9/images/top-level-workspace.svg diff --git a/content/en/blog/releases/2024.X/2024.7.md b/content/en/blog/releases/2024.X/2024.7.md index f4a190353..4c68329dd 100644 --- a/content/en/blog/releases/2024.X/2024.7.md +++ b/content/en/blog/releases/2024.X/2024.7.md @@ -80,6 +80,7 @@ Finally, the [Product Portal][] includes updates related to: | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | Yes | Major | Yes | The Interaction Portal flows will need to be [upgraded][upgrade flows steps] | | {{% ctx %}} App Server Install Scripts | 5.1.1.24340 | Yes | Patch | No | | | {{% ctx %}} Web App Server Install Scripts | 10.1.0.24340 | Yes | Major | No | Major changes occurred between internal development releases, however, these changes are not breaking between 2024.5 and 2024.7 | +| {{% ctx %}} Upgrade Scripts | 1.2.0.24210 | TODO | TODO | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 3.1.1.24250 | No | N/A | N/A | | | {{% ctx %}} Encryption Key Generator | 1.2.0.23470 | No | N/A | N/A | | | {{% ctx %}} Encryptor | 3.1.0.24330 | Yes | Minor | N/A | | @@ -91,6 +92,7 @@ Finally, the [Product Portal][] includes updates related to: ##### Reduced the number of license check calls +Previously, the [{{% ctx %}} Execution Service][] would request to the [{{% ctx %}} Licence Management Service][] whether the license was valid before every flow execution. Now, the [{{% ctx %}} Execution Service][] will only query the license on startup, license added, license removed, and license updated events. Previously, the [{{% ctx %}} Execution Service][] would request to the [{{% ctx %}} Licence Management Service][] whether the license was valid before every flow execution. Now, the [{{% ctx %}} Execution Service][] will only query the license on startup, license added, license removed, and license updated events. Affected Components: diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index 9506077e7..a212033ad 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -36,7 +36,7 @@ This release introduces multiple new features to the {{% ctx %}} platform: * A new built-in [execution context variable][] has been added to the Flow Engine which contains the initiator. * A new [Proxy to the {{% ctx %}} 7 Flow API][] has been added to the platform. -[Observability][] has been improved by [adding logging to blocks that communicates with external systems][Logging added to blocks that communicates with external systems]. +[Observability][] has been improved by [adding logging to blocks that communicates with external systems][Logging added to blocks that communicate with external systems]. \ Optimisation to [Scalability][] has also been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduction of total number of NServiceBus endpoints and RabbitMQ queues]. \ @@ -64,7 +64,7 @@ The [Upgrade][] process has been improved by: Finally, the [Documentation][] includes updates related to: -* New concepts such as [Process and Activities][] as well as [Decomposition of Output properties][]. +* New concepts such as [Process and Activity][Process and Activity Documentation] as well as [Decomposition of Output properties][]. * [Preventing deadlocks when using semaphores][Prevent deadlocks when using semaphores]. * [Updating screenshots][screenshots updated] to reflect the new branding. * [Flow compatibility version][Flow compatibility version introduced] being added to the release notes. @@ -74,26 +74,27 @@ Finally, the [Documentation][] includes updates related to: | Release Component | Version | Updated | Update Type | Breaking Change | Notes | |--------------------------------------------------------------------------------|---------------|---------|-------------|-----------------|--------| -| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB +| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB |     > [{{% ctx %}} Listeners Service][] | TODO | TODO | TODO | N/A | TODO | Waiting for AB -|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | TODO | Waiting for AB -| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | TODO | TODO | Waiting for AB +|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | TODO | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB | [{{% ctx %}} Blocks Package][Blocks] | TODO | Yes | Major | Yes | **review** Blocks are always breaking changes as the temporary loader needs updating in the debugger... | Waiting for AB | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | | {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | | {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | +| {{% ctx %}} Upgrade Scripts | 1.2.7.24430 | Yes | Patch | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | TODO | TODO | | {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | TODO | TODO | | {{% ctx %}} Encryptor | 3.1.0.24330 | No | N/A | N/A | | @@ -106,8 +107,8 @@ Finally, the [Documentation][] includes updates related to: ##### Process and Activity The [concept of Process and Activity][Process and Activity] has been introduced to the {{% ctx %}} Gateway. This allows for the creation of [Process][] and [Activity][] flows. -[Processes][] are a type of [Flow][] that can contain multiple [Activities][] and are used to model high-level business processes. -[Activities][] are a type of [Flow][] that can be used to model tasks or actions. +[Processes][Process] are a type of [Flow][] that can contain multiple [Activities][Activity] and are used to model high-level business processes. +[Activities][Activity] are a type of [Flow][] that can be used to model tasks or actions. @@ -116,6 +117,13 @@ The [concept of Process and Activity][Process and Activity] has been introduced +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] +* [{{% ctx %}} Block Packages][Blocks] + ##### Saving Output Properties to multiple variables It is now possible to use the [Expression editor][] for output properties. @@ -123,13 +131,25 @@ This provides a new [decomposition syntax][decomposition of output properties] a +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] + ##### Execution context variable -A new [built-in _executionContext variable][] is now exposed in [processes and activities][process and activity]. +A new [built-in _executionContext variable][] is now exposed in [processes][process] and [activities][activity]. The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] + ##### Proxy to the {{% ctx %}} 7 Flow API A new proxy to the {{% ctx %}} 7 Flow [API][] has been added to to simplify migrating to the platform. This allows for the execution of flows using the same [API][] as the one used in {{% ctx %}} 7. @@ -158,16 +178,24 @@ The [API][] also includes new management endpoints to map between a FlowName and +Affected Components: + +* [{{% ctx %}} Innovation Core Application][] + * [{{% ctx %}} API Gateway Service][] + * [{{% ctx %}} Listeners Service][] + * [{{% ctx %}} Triggers Service][] + #### Observability ##### Logging added to blocks that communicate with external systems -[Block logging][] has been added to blocks that communicate with external systems. +Block logging has been added to blocks that communicate with external systems. +Block logging has been added to blocks that communicate with external systems. The following blocks and properties are logged: * [Execute Data Command][] - * [CommandText][] of the [Command][] - * [Parameters][] of the [Command][] + * [CommandText][DataCommandCommandText] of the [Command][DataCommand] + * [Parameters][DataCommandParameters] of the [Command][DataCommand] * [Execute HTTP Request][] * [HTTPRequest][] * [HTTPResponse][] @@ -186,6 +214,12 @@ The following blocks and properties are logged: +Affected Components: + +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] +* [{{% ctx %}} Block Packages][Blocks] + #### Scalability ##### Reduction of total number of NServiceBus endpoints and RabbitMQ queues @@ -208,6 +242,23 @@ This has been achieved by consolidating the endpoints and queues where possible. +Affected Components: + +* [{{% ctx %}} Innovation Core Application][] + * [{{% ctx %}} API Gateway Service][] + * [{{% ctx %}} Authorisation Service][] + * [{{% ctx %}} Concurrency Management Service][] + * [{{% ctx %}} Configuration Management Service][] + * [{{% ctx %}} Data Storage Service][] + * [{{% ctx %}} Execution Management Service][] + * [{{% ctx %}} Licence Management Service][] + * [{{% ctx %}} Package Management Service][] + * [{{% ctx %}} Provisioning Service][] + * [{{% ctx %}} Scheduling Service][] + * [{{% ctx %}} Triggers Service][] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] + #### Security ##### Upgrade OpenSSL @@ -215,6 +266,11 @@ This has been achieved by consolidating the endpoints and queues where possible. The OpenSSL version shipped with the platform has been upgraded to the latest version. +Affected Components: + +* {{% ctx %}} App Server Install Scripts +* {{% ctx %}} Web App Server Install Scripts + ##### Multi-domain certificates support Support for Multi Domain Certificates in HA deployment is now supported. @@ -225,16 +281,28 @@ Support for Multi Domain Certificates in HA deployment is now supported. A new management user for RabbitMQ queues is now created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. +Affected Components: + +* {{% ctx %}} App Server Install Scripts + ##### Server-side validation added to {{% ctx %}} Gateway API The {{% ctx %}} Gateway [API][] now includes server-side validation to prevent [Path Traversal][] attacks when creating new flows and groups. +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] + ##### Remove refresh token cookie on sign out The refresh token cookie is now removed when a user signs out of {{% ctx %}} Gateway, preventing any further use of the token after the user has logged out. +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] + #### Usability ##### Rename Flows Charm to Dev and change icon @@ -242,11 +310,19 @@ The refresh token cookie is now removed when a user signs out of {{% ctx %}} Gat The Flows Charm has been renamed to Dev and the icon has been changed to reflect this. +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] + ##### Rename Settings Charm to Admin and change icon The Settings Charm has been renamed to Admin and the icon has been changed to reflect this. +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] + #### Third-party Support ##### Upgrade to .NET 8 @@ -259,12 +335,36 @@ Upgrade excludes {{% ctx %}} Gateway as currently on .NET Framework 4.7.2 which {{% /alert %}} +Affected Components: + +* [{{% ctx %}} Innovation Core Application][] + * [{{% ctx %}} API Gateway Service][] + * [{{% ctx %}} Authorisation Service][] + * [{{% ctx %}} Concurrency Management Service][] + * [{{% ctx %}} Configuration Management Service][] + * [{{% ctx %}} Data Storage Service][] + * [{{% ctx %}} Execution Management Service][] + * [{{% ctx %}} Licence Management Service][] + * [{{% ctx %}} Package Management Service][] + * [{{% ctx %}} Provisioning Service][] + * [{{% ctx %}} Scheduling Service][] + * [{{% ctx %}} Triggers Service][] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] +* [{{% ctx %}} Block Packages][Blocks] +* {{% ctx %}} App Server Install Scripts +* {{% ctx %}} Web App Server Install Scripts + ##### Upgrade to the latest version of Service Fabric The latest version of Service Fabric has been included in the artefacts. During upgrade, the Service Fabric cluster version will be upgrade to the packaged version in the artefacts. +Affected Components: + +* {{% ctx %}} Upgrade Scripts + #### Installation ##### Support installation when files are blocked by the operating system @@ -276,6 +376,11 @@ The installation scripts have been amended to unblock files before running if th {{% /alert %}} +Affected Components: + +* {{% ctx %}} App Server Install Scripts +* {{% ctx %}} Web App Server Install Scripts + #### Upgrade ##### Support upgrade when files are blocked by the operating system @@ -285,31 +390,46 @@ The upgrade scripts have been amended to unblock files before running if the ope {{% alert title="Note" %}} `Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. {{% /alert %}} - + + +Affected Components: + +* {{% ctx %}} Upgrade Scripts ##### Execution Service is upgraded when the engine version is unchanged The Execution Service will now be upgraded when the engine version is unchanged. This is to ensure the upgrade works, including edge cases such as patches. +Affected Components: + +* {{% ctx %}} Upgrade Scripts + ##### Handling of the Execution Services lifecycle events The Execution Services handle Service Fabric lifecycle events allowing flows to end gracefully within a defined period. This includes a `Graceful Period timeout` and a `Cancel Period Timeout`, both which default to 5 minutes, and are configurable. -{{% alert title="Note" %}} -For more information on how to modify these values, please contact [{{% ctx %}} Service Portal][CORTEX Service Portal] for further assistance. -{{% /alert %}} +Currently, there is no documentation available on how to do this. For further assistance, please raise a case in the [{{% ctx %}} Service Portal][]. +Affected Components: + +* [{{% ctx %}} Innovation Core Application][] + * [{{% ctx %}} API Gateway Service][] + * [{{% ctx %}} Configuration Management Service][] +* [{{% ctx %}} Innovation Execution Application][] + * [{{% ctx %}} Execution Service][] +* [{{% ctx %}} Block Packages][Blocks] + #### Documentation -##### Process and Activities +##### Process and Activity -The [What is a Flow][] documentation has been updated to include information on the new concepts of [Process and Activities][]. +The [What is a Flow][] documentation has been updated to include information on the new concepts of [Processes][Process] and [Activities][Activity]. COMMITTED ##### Decomposition of Output properties @@ -353,6 +473,10 @@ This ensures that encrypted values created with the default key can still be dec +Affected Components: + +* [{{% ctx %}} Gateway][Gateway] + #### Upgrade ##### Certificate update does not work after upgrade @@ -361,6 +485,10 @@ A bug has been fixed which prevented the update of certificates after an upgrade +Affected Components: + +* {{% ctx %}} Upgrade Scripts + #### Documentation ##### Missing Platform property in Log Event documentation @@ -370,8 +498,17 @@ The Platform property the the Log Event documentation was missing. This has been ### Breaking Changes +The following features have introduced breaking changes in the 2024.9 release of the {{% ctx %}} Platform: + +#### Reduction of total number of NServiceBus endpoints and RabbitMQ queues + +The following feature has changed internal endpoints and queues in the platform, which may cause issues if upgrading from 2024.7 to 2024.9 without upgrading all components at the same time. +The platform will need to be upgraded using the [Upgrade Instructions][]. + ### Known Limitations +There are no known limitations added as part of the 2024.9 release of the {{% ctx %}} Platform. + ## Version Support ### Operating Systems @@ -393,7 +530,7 @@ The Platform property the the Log Event documentation was missing. This has been | Release | Compatibility Version | |---------|-----------------------| -| 2024.9 | TODO | +| 2024.9 | 31.24311 | | 2024.7 | 31.24311 | | 2024.5 | 31.24311 | | 2024.3 | 30 | @@ -439,6 +576,7 @@ Releases are currently forecast to be made available on: [{{% ctx %}} Data Storage Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.DataStorageService.MainDoc" version="2024.9" >}} [{{% ctx %}} Execution Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ExecutionManagementService.MainDoc" version="2024.9" >}} [{{% ctx %}} Licence Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.LicenceManagementService.MainDoc" version="2024.9" >}} +[{{% ctx %}} Listeners Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ListenersService.MainDoc" version="2024.9" >}} [{{% ctx %}} Package Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.PackageManagementService.MainDoc" version="2024.9" >}} [{{% ctx %}} Provisioning Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ProvisioningService.MainDoc" version="2024.9" >}} [{{% ctx %}} Scheduling Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.SchedulingService.MainDoc" version="2024.9" >}} @@ -447,13 +585,15 @@ Releases are currently forecast to be made available on: [{{% ctx %}} Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" version="2024.9" >}} [Interaction Portal]: {{< url path="Cortex.Guides.CortexInteractionPortal.MainDoc" version="2024.9" >}} -[Capability]: {{< ref "#capability" >}} [Process and Activity]: {{< ref "#process-and-activity" >}} [Saving Output Properties to multiple variables]: {{< ref "#saving-output-properties-to-multiple-variables" >}} [execution context variable]: {{< ref "#execution-context-variable" >}} [Proxy to the {{% ctx %}} 7 Flow API]: {{< ref "#proxy-to-the-legacy-flow-api" >}} +[Observability]: {{< ref "#observability" >}} [Logging added to blocks that communicate with external systems]: {{< ref "#logging-added-to-blocks-that-communicate-with-external-systems" >}} +[Scalability]: {{< ref "#scalability" >}} [Reduction of total number of NServiceBus endpoints and RabbitMQ queues]: {{< ref "#reduction-of-total-number-of-nservicebus-endpoints-and-rabbitmq-queues" >}} +[Security]: {{< ref "#security" >}} [Upgrade OpenSSL]: {{< ref "#upgrade-openssl" >}} [Multi-domain certificates support]: {{< ref "#multi-domain-certificates-support" >}} [New CortexManagementUser added to manage RabbitMQ queues]: {{< ref "#new-cortexmanagementuser-added-to-manage-rabbitmq-queues" >}} @@ -470,74 +610,66 @@ Releases are currently forecast to be made available on: [Execution Service is upgraded when the engine version is unchanged]: {{< ref "#execution-service-is-upgraded-when-the-engine-version-is-unchanged" >}} [Handling of the Execution Services lifecycle events]: {{< ref "#handling-of-the-execution-services-lifecycle-events" >}} [Documentation]: {{< ref "#documentation" >}} -[Process and Activities]: {{< ref "#process-and-activities" >}} +[Process and Activity Documentation]: {{< ref "#process-and-activities-1" >}} [Decomposition of Output properties]: {{< ref "#decomposition-of-output-properties" >}} [Prevent deadlocks when using semaphores]: {{< ref "#prevent-deadlocks-when-using-semaphores" >}} [Screenshots updated]: {{< ref "#screenshots-updated" >}} [Flow compatibility version introduced]: {{< ref "#flow-compatibility-version-introduced" >}} [General improvements to the documentation]: {{< ref "#general-improvements-to-the-documentation" >}} -[Observability]: {{< ref "#observability" >}} -[Scalability]: {{< ref "#scalability" >}} -[Security]: {{< ref "#security" >}} - +[Flow compatibility version]: {{< ref "#flow-compatibility" >}} [Upgrade Instructions]: {{< ref "#upgrade-instructions" >}} -[Breaking - Scope data type has been renamed]: {{< ref "#scope-data-type-has-been-renamed-1" >}} -[Breaking - Flows are now compressed in the Package Management Service]: {{< ref "#flows-are-now-compressed-in-the-package-management-service" >}} +[{{% ctx %}} Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} [Blocks]: {{< url path="Cortex.Reference.Blocks.MainDoc" version="2024.9" >}} +[What is a Flow]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow.MainDoc" version="2024.9" >}} +[Process]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow.Process" version="2024.9" >}} +[Activity]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow.Activity" version="2024.9" >}} +[What is a Block Property]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.MainDoc" version="2024.9" >}} -[Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} +[prevent deadlocks]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Concurrency.Semaphores.WhatIsASemaphore.PreventingDeadlocks" version="2024.9" >}} + +[Execute Data Command]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" version="2024.9" >}} +[DataCommand]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.CommandProperty" version="2024.9" >}} +[DataCommandCommandText]: {{< url path="Cortex.Reference.DataTypes.Data.DataCommand.CommandText" version="2024.9" >}} +[DataCommandParameters]: {{< url path="Cortex.Reference.DataTypes.Data.DataCommand.Parameters" version="2024.9" >}} + +[Execute HTTP Request]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest.MainDoc" version="2024.9" >}} +[HttpRequest]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest.HttpRequestProperty" version="2024.9" >}} +[HttpResponse]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest.HttpResponseProperty" version="2024.9" >}} -[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc" version="2024.9">}} -[ScopeDefinition]: {{< url path="Cortex.Reference.DataTypes.Scopes.ScopeDefinition.MainDoc" version="2024.9">}} +[Execute Soap Request]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteSoapRequest.ExecuteSoapRequest.MainDoc" version="2024.9" >}} +[SoapRequest]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteSoapRequest.ExecuteSoapRequest.SoapRequestProperty" version="2024.9" >}} +[SoapResponse]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteSoapRequest.ExecuteSoapRequest.SoapResponseProperty" version="2024.9" >}} -[Wireless Blocks]: {{< url path="Cortex.Reference.Blocks.Wireless.MainDoc" version="2024.9" >}} -[Wireless Receiver]: {{< url path="Cortex.Reference.Blocks.Wireless.WirelessReceiver.WirelessReceiver.MainDoc" version="2024.9" >}} -[Wireless Sender]: {{< url path="Cortex.Reference.Blocks.Wireless.WirelessSender.WirelessSender.MainDoc" version="2024.9" >}} -[WirelessReceiverBlockReference]: {{< url path="Cortex.Reference.DataTypes.Wireless.WirelessReceiverBlockReference.MainDoc" version="2024.9" >}} -[WirelessReceiverBlockNotFoundException]: {{< url path="Cortex.Reference.Exceptions.Wireless.WirelessReceiverBlockNotFoundException.MainDoc" version="2024.9" >}} +[Execute Powershell Script]: {{< url path="Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript.MainDoc" version="2024.9" >}} +[Script]: {{< url path="Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript.ScriptProperty" version="2024.9" >}} +[Parameters]: {{< url path="Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript.ParametersProperty" version="2024.9" >}} +[Outputs]: {{< url path="Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript.OutputsProperty" version="2024.9" >}} +[Records]: {{< url path="Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript.RecordsProperty" version="2024.9" >}} + +[Execute SSH Command]: {{< url path="Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock.MainDoc" version="2024.9" >}} +[Command]: {{< url path="Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock.CommandProperty" version="2024.9" >}} +[Response]: {{< url path="Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock.Response" version="2024.9" >}} +[SSH Logs]: {{< url path="Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock.SshLogsProperty" version="2024.9" >}} + +[Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} +[Expression Editor]: {{< url path="Cortex.Guides.Studio.ExpressionEditor.MainDoc" version="2024.9" >}} -[Execute Data Command Block]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" version="2024.9" >}} -[UserCredentials]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.MainDoc" version="2024.9" >}} -[LogonType]: {{< url path="Cortex.Reference.DataTypes.Credentials.UserCredentials.LogonType" version="2024.9" >}} +[.NET 8]: {{< url path="Cortex.Reference.Glossary.A-E.DotNet" >}} +[API]: {{< url path="Cortex.Reference.Glossary.A-E.API" >}} +[Service Fabric]: {{< url path="Cortex.Reference.Glossary.P-T.ServiceFabric" >}} [Innovation Only - Single Server - Without HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.SingleServerWithoutHA.MainDoc" version="2024.9" >}} [Innovation Only - Multiple Server - With HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.MainDoc" version="2024.9" >}} [Adding Innovation to a 7.2 Installation - Single Server - Without HA]: {{< url path="Cortex.GettingStarted.OnPremise.AddInnovationTo72.SingleServerWithoutHA.MainDoc" version="2024.9" >}} [Adding Innovation to a 7.2 Installation - Multiple Server - With HA]: {{< url path="Cortex.GettingStarted.OnPremise.AddInnovationTo72.MultipleServerWithHA.MainDoc" version="2024.9" >}} -[Import Certificate Manually]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.ImportCertificateManuallyNew" version="2024.9" >}} -[Perform Cortex Gateway Installation]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.GatewayInstallation" version="2024.9" >}} -[Install Flow Debugger]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.DebuggerInstallation" version="2024.9" >}} -[upgrade steps]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.MainDoc" version="2024.9" >}} -[upgrade flows steps]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.Advanced.UpgradeFlows" version="2024.9" >}} [Upgrade - Single Server - Without HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.SingleServerWithoutHA.MainDoc" version="2024.9" >}} [Upgrade - Multiple Server - With HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.MultipleServerWithHA.MainDoc" version="2024.9" >}} +[Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues]: {{< ref "#reduction-of-total-number-of-nservicebus-endpoints-and-rabbitmq-queues-1" >}} [{{% ctx %}} Studio]: {{< url path="Cortex.Guides.Studio.MainDoc" version="2024.9" >}} diff --git a/content/en/docs/2024.9/Guides/cortex-innovation/core-application/services/listeners-service/_index.md b/content/en/docs/2024.9/Guides/cortex-innovation/core-application/services/listeners-service/_index.md new file mode 100644 index 000000000..3cc2cd206 --- /dev/null +++ b/content/en/docs/2024.9/Guides/cortex-innovation/core-application/services/listeners-service/_index.md @@ -0,0 +1,7 @@ +--- +title: "Listeners Service" +linkTitle: "Listeners Service" +description: "The Listeners Service." +--- + +{{< workinprogress >}} \ No newline at end of file diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md index 7672bee54..49c00f1c9 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md @@ -13,43 +13,98 @@ A flow is an object in [{{% ctx %}} Studio][CORTEX Studio] that contains the log ## Anatomy of a Flow -{{< figure src="/images/top-level-workspace.svg" title="Example Flow" >}} - -* Start Flow block - * Identifies where the [flow execution][] will start - * Automatically created when the flow is created - * Cannot be deleted - * See [Start Flow][] block -* Action blocks - * Performs a specific action - * Icon on block indicates the nature of the action - * See [Blocks][Reference Blocks] -* Decision block - * Causes the [flow execution][] to branch, dependent on a condition - * Icon on block indicates type of condition causing branching - * See [Decision Blocks][Decision Blocks] -* Workspace blocks - * Contains grouped flow logic - * The turndown on the top-right of the icon indicates it contains a [workspace][], which can be opened by double-clicking the icon - * See [Workspace][Workspace Block] block -* End Flow block - * Ends the [flow execution][] - * Automatically created when the flow is created - * See [End Flow][] block -* Handle Flow Exception block - * Handles [flow level exceptions][], thrown during the [flow execution][] - * Automatically created when the flow is created - * The turndown on the top-right of the icon indicates it contains a [workspace][workspaces], which can be opened by double-clicking the icon - * Cannot be deleted - * See [Handle Flow Exception][] block -* Flow Variable Store - * This is deprecated in favour of the [Variables Grid][] - * The [Variables Grid][] can be opened by double-clicking the icon, the scope will be set to `Defined (Selected Workspace)` - * Cannot be deleted -* Workspace - * The [Top-Level Workspace][] within the flow - * Canvas on which blocks are placed and connected to create the flow logic - * See [Workspace][workspaces] +There are two types of flows, which are used for different purposes: + +* [Process][] +* [Activity][] + +### Process + +Processes are a type of [Flow][] that can contain multiple [Activities][Activity] and are used to model high-level business processes. + +{{< figure src="/images/top-level-workspace-process.svg" title="Example Process" >}} + +### Activity + +Activities are a type of [Flow][] that can be used to model tasks or actions. + +{{< figure src="/images/top-level-workspace-activity.svg" title="Example Activity" >}} + +## Composition of a flow + +Flows are composed of the following blocks: + +* [Start Flow block][] +* [Action blocks][] +* [Decision block][] +* [Workspace blocks][] +* [End Flow block][] +* [Handle Flow Exception block][] +* [Flow Variable Store][Flow Variable Store ref] +* [Workspace][Workspace ref] + +### Start Flow block + +Identifies where the [flow execution][] will start. + +* Automatically created when the flow is created +* Cannot be deleted +* See [Start Flow][] block + +### Action blocks + +Performs a specific action. + +* Icon on block indicates the nature of the action +* See [Blocks][Reference Blocks] + +### Decision block + +Causes the [flow execution][] to branch, dependent on a condition. + +* Icon on block indicates type of condition causing branching +* See [Decision Blocks][Decision Blocks] + +### Workspace blocks + +Contains grouped flow logic. + +* The turndown on the top-right of the icon indicates it contains a [workspace][], which can be opened by double-clicking the icon +* See [Workspace][Workspace Block] block + +### End Flow block + +Ends the [flow execution][]. + +* Automatically created when the flow is created +* See [End Flow][] block + +### Handle Flow Exception block + +Handles [flow level exceptions][], thrown during the [flow execution][]. + +* Automatically created when the flow is created +* The turndown on the top-right of the icon indicates it contains a [workspace][workspaces], which can be opened by double-clicking the icon +* Cannot be deleted +* See [Handle Flow Exception][] block + +### Flow Variable Store + +Stores variables that can be used within the flow. + +* The [Variables Grid][] can be opened by double-clicking the icon, the scope will be set to `Defined (Selected Workspace)` +* Cannot be deleted + +{{% alert title="Note" %}} +This is deprecated in favour of the {{< ahref path="Cortex.Guides.Studio.SouthPanel.VariablesGrid" title="Variables Grid" >}} +{{% /alert %}} + +### Workspace + +The [Top-Level Workspace][] within the flow. + +* Canvas on which blocks are placed and connected to create the flow logic +* See [Workspace][workspaces] ## Grouping Logic within a Flow @@ -109,6 +164,19 @@ Currently, it is not possible to have a [Handle Workspace Exception][] block on None +[Activity]: {{< ref "#activity" >}} +[Process]: {{< ref "#process" >}} +[Flow]: {{< ref "#summary" >}} + +[Start Flow block]: {{< ref "#start-flow-block" >}} +[Action blocks]: {{< ref "#action-blocks" >}} +[Decision block]: {{< ref "#decision-block" >}} +[Workspace blocks]: {{< ref "#workspace-blocks" >}} +[End Flow block]: {{< ref "#end-flow-block" >}} +[Handle Flow Exception block]: {{< ref "#handle-flow-exception-block" >}} +[Flow Variable Store ref]: {{< ref "#flow-variable-store" >}} +[Workspace ref]: {{< ref "#workspace" >}} + [blocks]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.MainDoc" >}} [Handling Exceptions within a Block]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.HandlingExceptionsWithinABlock.MainDoc" >}} [Exceptions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Exceptions.MainDoc" >}} diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/workspaces/what-is-a-workspace.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/workspaces/what-is-a-workspace.md index 262610221..9cc71a32a 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/workspaces/what-is-a-workspace.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/workspaces/what-is-a-workspace.md @@ -17,7 +17,7 @@ A workspace is used to group logic and actions within a [flow][], in order to re A flow can only contain one Top-Level Workspace, which acts as the entry point for the [flow execution][]. -{{< figure src="/images/top-level-workspace.svg" title="Example Top-Level Workspace" >}} +{{< figure src="/images/top-level-workspace-activity.svg" title="Example Top-Level Workspace" >}} * Start Flow block * Identifies where the [flow execution][] will start diff --git a/content/static/2024.9/images/top-level-workspace-activity.svg b/content/static/2024.9/images/top-level-workspace-activity.svg new file mode 100644 index 000000000..993b1b26b --- /dev/null +++ b/content/static/2024.9/images/top-level-workspace-activity.svg @@ -0,0 +1,4 @@ + + + +
Start Flow Block
Start Flow...
Action Block
Action...
Decision Block
Decision...
Workspace Blocks
Workspace...
End Flow Block
End Flow B...
Handle Flow Exception Block
Handle Flow Exc...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/content/static/2024.9/images/top-level-workspace-process.svg b/content/static/2024.9/images/top-level-workspace-process.svg new file mode 100644 index 000000000..2c662ece9 --- /dev/null +++ b/content/static/2024.9/images/top-level-workspace-process.svg @@ -0,0 +1,4 @@ + + + +
Action Block
Action...
Handle Flow Exception Block
Handle Flow Exc...
Workspace Blocks
Workspace...
Start Flow Block
Start Flow Block
Action Block
Action...
End Flow Block
End Flow...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/content/static/2024.9/images/top-level-workspace.svg b/content/static/2024.9/images/top-level-workspace.svg deleted file mode 100644 index 6fd291001..000000000 --- a/content/static/2024.9/images/top-level-workspace.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Start Flow Block
Start Flow...
Action Block
Action...
Decision Block
Decision...
Workspace Blocks
Workspace...
End Flow Block
End Flow B...
Handle Flow Exception Block
Handle Flow Exc...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/data/urls.toml b/data/urls.toml index 81593cf48..281a4dda5 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -443,6 +443,8 @@ MainDoc = "/docs/guides/cortex-innovation/core-application/services/execution-management-service/" [Cortex.Guides.CortexInnovation.CoreApplication.Services.LicenceManagementService] MainDoc = "/docs/guides/cortex-innovation/core-application/services/licence-management-service/" + [Cortex.Guides.CortexInnovation.CoreApplication.Services.ListenersService] + MainDoc = "/docs/guides/cortex-innovation/core-application/services/listeners-service/" [Cortex.Guides.CortexInnovation.CoreApplication.Services.PackageManagementService] MainDoc = "/docs/guides/cortex-innovation/core-application/services/package-management-service/" [Cortex.Guides.CortexInnovation.CoreApplication.Services.ProvisioningService] @@ -890,11 +892,15 @@ MainDoc = "/docs/reference/blocks/http/execute-http-request" [Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest] MainDoc = "/docs/reference/blocks/http/execute-http-request/execute-http-request-block-1" + HttpRequestProperty = "/docs/reference/blocks/http/execute-http-request/execute-http-request-block-1/#http-request" + HttpResponseProperty = "/docs/reference/blocks/http/execute-http-request/execute-http-request-block-1/#http-response" CallingAnotherFlow = "/docs/reference/blocks/http/execute-http-request/execute-http-request-block-1/#calling-another-flow" [Cortex.Reference.Blocks.Http.ExecuteSoapRequest] MainDoc = "/docs/reference/blocks/http/execute-soap-request" [Cortex.Reference.Blocks.Http.ExecuteSoapRequest.ExecuteSoapRequest] MainDoc = "/docs/reference/blocks/http/execute-soap-request/execute-soap-request-block-1" + SoapRequestProperty = "/docs/reference/blocks/http/execute-soap-request/execute-soap-request-block-1/#soap-request" + SoapResponseProperty = "/docs/reference/blocks/http/execute-soap-request/execute-soap-request-block-1/#soap-response" [Cortex.Reference.Blocks.Json] MainDoc = "/docs/reference/blocks/json/" [Cortex.Reference.Blocks.Json.ConvertJson] @@ -1039,6 +1045,10 @@ MainDoc = "/docs/reference/blocks/powershell/execute-powershell-script/" [Cortex.Reference.Blocks.PowerShell.ExecutePowerShellScript.ExecutePowerShellScript] MainDoc = "/docs/reference/blocks/powershell/execute-powershell-script/execute-powershell-script-block-1" + ScriptProperty = "/docs/reference/blocks/powershell/execute-powershell-script/execute-powershell-script-block-1/#script" + ParametersProperty = "/docs/reference/blocks/powershell/execute-powershell-script/execute-powershell-script-block-1/#parameters" + OutputsProperty = "/docs/reference/blocks/powershell/execute-powershell-script/execute-powershell-script-block-1/#outputs" + RecordsProperty = "/docs/reference/blocks/powershell/execute-powershell-script/execute-powershell-script-block-1/#records" [Cortex.Reference.Blocks.Queues] MainDoc = "/docs/reference/blocks/queues/" [Cortex.Reference.Blocks.Queues.DequeueItem] @@ -1071,11 +1081,13 @@ MainDoc = "/docs/reference/blocks/ssh/execute-ssh-command" [Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock] MainDoc = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block" + CommandProperty = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#command" TerminalPromptMatchRemark = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#using-the-terminalpromptmatch-within-sshlogs-to-reach-the-end-of-a-prompt" ConfigurationSettings = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#configuration-settings" CloseSession = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#close-session" Response = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#response" SshSessionDetails = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#ssh-session-details" + SshLogsProperty = "/docs/reference/blocks/ssh/execute-ssh-command/execute-ssh-command-block/#ssh-logs" [Cortex.Reference.Blocks.Tasks] MainDoc = "/docs/reference/blocks/tasks/" [Cortex.Reference.Blocks.Tasks.CancelTask] @@ -1358,6 +1370,8 @@ MainDoc = "/docs/reference/concepts/fundamentals/flows/handling-exceptions-within-a-flow" [Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow] MainDoc = "/docs/reference/concepts/fundamentals/flows/what-is-a-flow" + Process = "/docs/reference/concepts/fundamentals/flows/what-is-a-flow/#process" + Activity = "/docs/reference/concepts/fundamentals/flows/what-is-a-flow/#activity" [Cortex.Reference.Concepts.Fundamentals.Messages] MainDoc = "/docs/reference/concepts/fundamentals/messages/" [Cortex.Reference.Concepts.Fundamentals.Messages.WhatIsAMessage] @@ -1414,6 +1428,7 @@ Non-Queuing = "/docs/reference/concepts/working-with/concurrency/semaphores/what-is-a-semaphore/#non-queuing-semaphore" Queuing = "/docs/reference/concepts/working-with/concurrency/semaphores/what-is-a-semaphore/#queuing-semaphore" MultipleConcurrencyLimits = "/docs/reference/concepts/working-with/concurrency/semaphores/what-is-a-semaphore/#multiple-concurrency-limits" + PreventingDeadlocks = "/docs/reference/concepts/working-with/concurrency/semaphores/what-is-a-semaphore/#preventing-deadlocks" [Cortex.Reference.Concepts.WorkingWith.Culture] MainDoc = "/docs/reference/concepts/working-with/culture/" [Cortex.Reference.Concepts.WorkingWith.Culture.CurrentCulture] From 6d77845be4a5d352dac3af6e9c359aa11f859816 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Tue, 8 Oct 2024 16:45:46 +0100 Subject: [PATCH 07/18] Second PO Review --- config/_default/config.toml | 2 +- content/en/blog/releases/2024.X/2024.9.md | 121 +++++++++++++--------- 2 files changed, 75 insertions(+), 48 deletions(-) diff --git a/config/_default/config.toml b/config/_default/config.toml index e159354af..75dddfc00 100644 --- a/config/_default/config.toml +++ b/config/_default/config.toml @@ -207,7 +207,7 @@ enable = true [[params.versions]] version = "2024.9" url = "/docs/2024.9/" - dotNetVersion = "net-6.0" + dotNetVersion = "net-8.0" latest = true [[params.versions]] diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index a212033ad..bb19dacba 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -34,9 +34,9 @@ This release introduces multiple new features to the {{% ctx %}} platform: * The concept of [Process and Activity][], which are types of [Flow][], has now been introduced to {{% ctx %}} Gateway. * [Saving Output Properties to multiple variables][] is now supported. * A new built-in [execution context variable][] has been added to the Flow Engine which contains the initiator. -* A new [Proxy to the {{% ctx %}} 7 Flow API][] has been added to the platform. +* A new [Proxy for the {{% ctx %}} 7 Flow API][] has been added to the platform. -[Observability][] has been improved by [adding logging to blocks that communicates with external systems][Logging added to blocks that communicate with external systems]. +[Observability][] has been improved by [adding logging to blocks that communicate with external systems][Logging added to blocks that communicate with external systems]. \ Optimisation to [Scalability][] has also been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduction of total number of NServiceBus endpoints and RabbitMQ queues]. \ @@ -59,6 +59,7 @@ The [Usability][] of the platform has been improved by: \ The [Upgrade][] process has been improved by: +* [Supporting upgrade when files are blocked by the operating system][Support upgrade when files are blocked by the operating system]. * Upgrading the [Execution Service when the engine version is unchanged][Execution Service is upgraded when the engine version is unchanged]. * [Handling of the Execution Services lifecycle events][]. @@ -72,33 +73,33 @@ Finally, the [Documentation][] includes updates related to: ### Components -| Release Component | Version | Updated | Update Type | Breaking Change | Notes | -|--------------------------------------------------------------------------------|---------------|---------|-------------|-----------------|--------| -| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Listeners Service][] | TODO | TODO | TODO | N/A | TODO | Waiting for AB -|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | TODO | **review** Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Blocks Package][Blocks] | TODO | Yes | Major | Yes | **review** Blocks are always breaking changes as the temporary loader needs updating in the debugger... | Waiting for AB -| [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | -| {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | -| {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | -| {{% ctx %}} Upgrade Scripts | 1.2.7.24430 | Yes | Patch | N/A | | -| {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | TODO | TODO | -| {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | TODO | TODO | -| {{% ctx %}} Encryptor | 3.1.0.24330 | No | N/A | N/A | | -| {{% ctx %}} Flows Upgrader | 2.0.0.24350 | Yes | Major | TODO | TODO | +| Release Component | Version | Updated | Update Type | Breaking Change | Notes | +|--------------------------------------------------------------------------------|---------------|---------|---------------|-----------------|--------| +| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Listeners Service][] | TODO | Yes | First Release | N/A | | Waiting for AB +|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the server-side validation of the APIs are [breaking][Breaking - Server-side validation added to {{% ctx %}} Gateway API] between 2024.7 and 2024.9 | Waiting for AB +| [{{% ctx %}} Blocks Package][Blocks] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | Waiting for AB +| [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | +| {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | +| {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | +| {{% ctx %}} Upgrade Scripts | 1.2.7.24430 | Yes | Patch | N/A | | +| {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | +| {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | +| {{% ctx %}} Encryptor | 3.1.0.24330 | No | N/A | N/A | | +| {{% ctx %}} Flows Upgrader | 2.0.0.24350 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | ### Features @@ -127,7 +128,10 @@ Affected Components: ##### Saving Output Properties to multiple variables It is now possible to use the [Expression editor][] for output properties. -This provides a new [decomposition syntax][decomposition of output properties] allowing saving selected values from an output property to multiple variables. +This supports a new [decomposition syntax][decomposition of output properties] allowing saving selected values from an output property to multiple variables. +TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE +http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions +http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/what-is-a-block-property/#output-properties @@ -140,7 +144,9 @@ Affected Components: ##### Execution context variable A new [built-in _executionContext variable][] is now exposed in [processes][process] and [activities][activity]. -The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. +The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. +TODO - REVIEW LINK TO EXECUTION CONTEXT WHICH SHOULD HAVE SECTION IN +http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/executions/what-is-an-execution/ @@ -150,9 +156,9 @@ Affected Components: * [{{% ctx %}} Innovation Execution Application][] * [{{% ctx %}} Execution Service][] -##### Proxy to the {{% ctx %}} 7 Flow API +##### Proxy for the {{% ctx %}} 7 Flow API -A new proxy to the {{% ctx %}} 7 Flow [API][] has been added to to simplify migrating to the platform. This allows for the execution of flows using the same [API][] as the one used in {{% ctx %}} 7. +A new proxy for the {{% ctx %}} 7 Flow [API][] has been added to simplify migrating to the platform. This allows for the execution of flows using the same [API][] as the one used in {{% ctx %}} 7. @@ -169,7 +175,8 @@ The [API][] includes the following endpoints: -The [API][] also includes new management endpoints to map between a FlowName and specific package versions: +By default, the `Run Flow` and `Run Flow Asynchronously` endpoints will run the specified flow within the default package and version. +To run the flow in a different package and version, the following [APIs][API] have been added to configure mappings between FlowNames and specific package versions: * Get all mappings * Add single mapping @@ -189,13 +196,11 @@ Affected Components: ##### Logging added to blocks that communicate with external systems -Block logging has been added to blocks that communicate with external systems. Block logging has been added to blocks that communicate with external systems. The following blocks and properties are logged: * [Execute Data Command][] - * [CommandText][DataCommandCommandText] of the [Command][DataCommand] - * [Parameters][DataCommandParameters] of the [Command][DataCommand] + * [Command][DataCommand] * [Execute HTTP Request][] * [HTTPRequest][] * [HTTPResponse][] @@ -276,6 +281,11 @@ Affected Components: Support for Multi Domain Certificates in HA deployment is now supported. +Affected Components: + +* {{% ctx %}} App Server Install Scripts +* {{% ctx %}} Web App Server Install Scripts + ##### New CortexManagementUser added to manage RabbitMQ queues A new management user for RabbitMQ queues is now created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. @@ -354,6 +364,10 @@ Affected Components: * [{{% ctx %}} Block Packages][Blocks] * {{% ctx %}} App Server Install Scripts * {{% ctx %}} Web App Server Install Scripts +* {{% ctx %}} Upgrade Scripts +* {{% ctx %}} Licence Fingerprint Generator +* {{% ctx %}} Encryption Key Generator +* {{% ctx %}} Flows Upgrader ##### Upgrade to the latest version of Service Fabric @@ -369,7 +383,7 @@ Affected Components: ##### Support installation when files are blocked by the operating system -The installation scripts have been amended to unblock files before running if the operating system has file being blocked by `Zone.Identifier`. +The installation scripts have been amended to unblock files before running if the operating system has files being blocked by `Zone.Identifier`. {{% alert title="Note" %}} `Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. @@ -385,7 +399,7 @@ Affected Components: ##### Support upgrade when files are blocked by the operating system -The upgrade scripts have been amended to unblock files before running if the operating system has file being blocked by `Zone.Identifier`. +The upgrade scripts have been amended to unblock files before running if the operating system has files being blocked by `Zone.Identifier`. {{% alert title="Note" %}} `Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. @@ -430,12 +444,16 @@ Affected Components: ##### Process and Activity The [What is a Flow][] documentation has been updated to include information on the new concepts of [Processes][Process] and [Activities][Activity]. - COMMITTED + ##### Decomposition of Output properties The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][] feature. - NEW + +TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE +http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions +http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/what-is-a-block-property/#output-properties + ##### Prevent deadlocks when using semaphores @@ -500,11 +518,19 @@ The Platform property the the Log Event documentation was missing. This has been The following features have introduced breaking changes in the 2024.9 release of the {{% ctx %}} Platform: +#### Upgrade to .NET 8 + +The platform has been upgraded to [.NET 8][]. + #### Reduction of total number of NServiceBus endpoints and RabbitMQ queues The following feature has changed internal endpoints and queues in the platform, which may cause issues if upgrading from 2024.7 to 2024.9 without upgrading all components at the same time. The platform will need to be upgraded using the [Upgrade Instructions][]. +#### Server-side validation added to {{% ctx %}} Gateway API + +The following feature has added validation to the [{{% ctx %}} Gateway][] API to prevent [Path Traversal][] attacks, which now returns an error if the path is invalid. + ### Known Limitations There are no known limitations added as part of the 2024.9 release of the {{% ctx %}} Platform. @@ -588,7 +614,7 @@ Releases are currently forecast to be made available on: [Process and Activity]: {{< ref "#process-and-activity" >}} [Saving Output Properties to multiple variables]: {{< ref "#saving-output-properties-to-multiple-variables" >}} [execution context variable]: {{< ref "#execution-context-variable" >}} -[Proxy to the {{% ctx %}} 7 Flow API]: {{< ref "#proxy-to-the-legacy-flow-api" >}} +[Proxy for the {{% ctx %}} 7 Flow API]: {{< ref "#proxy-for-the-cortex-7-flow-api" >}} [Observability]: {{< ref "#observability" >}} [Logging added to blocks that communicate with external systems]: {{< ref "#logging-added-to-blocks-that-communicate-with-external-systems" >}} [Scalability]: {{< ref "#scalability" >}} @@ -597,7 +623,7 @@ Releases are currently forecast to be made available on: [Upgrade OpenSSL]: {{< ref "#upgrade-openssl" >}} [Multi-domain certificates support]: {{< ref "#multi-domain-certificates-support" >}} [New CortexManagementUser added to manage RabbitMQ queues]: {{< ref "#new-cortexmanagementuser-added-to-manage-rabbitmq-queues" >}} -[Server-side validation added to {{% ctx %}} Gateway API]: {{< ref "#validation-added-to-legacy-flows-api" >}} +[Server-side validation added to {{% ctx %}} Gateway API]: {{< ref "#server-side-validation-added-to-cortex-gateway-api" >}} [Remove refresh token cookie on sign out]: {{< ref "#remove-refresh-token-cookie-on-sign-out" >}} [Usability]: {{< ref "#usability" >}} [Rename Flows Charm to Dev and change icon]: {{< ref "#rename-flows-charm-to-dev-and-change-icon" >}} @@ -607,10 +633,11 @@ Releases are currently forecast to be made available on: [Installation]: {{< ref "#installation" >}} [Support installation when files are blocked by the operating system]: {{< ref "#support-installation-when-files-are-blocked-by-the-operating-system" >}} [Upgrade]: {{< ref "#upgrade" >}} +[Support upgrade when files are blocked by the operating system]: {{< ref "#support-upgrade-when-files-are-blocked-by-the-operating-system" >}} [Execution Service is upgraded when the engine version is unchanged]: {{< ref "#execution-service-is-upgraded-when-the-engine-version-is-unchanged" >}} [Handling of the Execution Services lifecycle events]: {{< ref "#handling-of-the-execution-services-lifecycle-events" >}} [Documentation]: {{< ref "#documentation" >}} -[Process and Activity Documentation]: {{< ref "#process-and-activities-1" >}} +[Process and Activity Documentation]: {{< ref "#process-and-activity-1" >}} [Decomposition of Output properties]: {{< ref "#decomposition-of-output-properties" >}} [Prevent deadlocks when using semaphores]: {{< ref "#prevent-deadlocks-when-using-semaphores" >}} [Screenshots updated]: {{< ref "#screenshots-updated" >}} @@ -632,8 +659,6 @@ Releases are currently forecast to be made available on: [Execute Data Command]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.MainDoc" version="2024.9" >}} [DataCommand]: {{< url path="Cortex.Reference.Blocks.Data.ExecuteDataCommand.ExecuteDataCommand.CommandProperty" version="2024.9" >}} -[DataCommandCommandText]: {{< url path="Cortex.Reference.DataTypes.Data.DataCommand.CommandText" version="2024.9" >}} -[DataCommandParameters]: {{< url path="Cortex.Reference.DataTypes.Data.DataCommand.Parameters" version="2024.9" >}} [Execute HTTP Request]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest.MainDoc" version="2024.9" >}} [HttpRequest]: {{< url path="Cortex.Reference.Blocks.Http.ExecuteHttpRequest.ExecuteHttpRequest.HttpRequestProperty" version="2024.9" >}} @@ -655,7 +680,7 @@ Releases are currently forecast to be made available on: [SSH Logs]: {{< url path="Cortex.Reference.Blocks.Ssh.ExecuteSshCommand.ExecuteSshCommandBlock.SshLogsProperty" version="2024.9" >}} [Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} -[Expression Editor]: {{< url path="Cortex.Guides.Studio.ExpressionEditor.MainDoc" version="2024.9" >}} +[Expression Editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" version="2024.9" >}} [.NET 8]: {{< url path="Cortex.Reference.Glossary.A-E.DotNet" >}} [API]: {{< url path="Cortex.Reference.Glossary.A-E.API" >}} @@ -670,6 +695,8 @@ Releases are currently forecast to be made available on: [Upgrade - Single Server - Without HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.SingleServerWithoutHA.MainDoc" version="2024.9" >}} [Upgrade - Multiple Server - With HA]: {{< url path="Cortex.Guides.UpgradeCortex.2024.7to2024.9.MultipleServerWithHA.MainDoc" version="2024.9" >}} [Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues]: {{< ref "#reduction-of-total-number-of-nservicebus-endpoints-and-rabbitmq-queues-1" >}} +[Breaking - Upgrade to .NET 8]: {{< ref "#upgrade-to-net-8-1" >}} +[Breaking - Server-side validation added to {{% ctx %}} Gateway API]: {{< ref "#server-side-validation-added-to-cortex-gateway-api-1" >}} [{{% ctx %}} Studio]: {{< url path="Cortex.Guides.Studio.MainDoc" version="2024.9" >}} From 86a5aa18530f0db35fca115bcf055e518000927d Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Wed, 9 Oct 2024 11:56:12 +0100 Subject: [PATCH 08/18] reviewed Execution and Flow with PO and beginning of What's new --- content/en/blog/releases/2024.X/2024.9.md | 9 +- .../executions/what-is-an-execution.md | 48 ++++++ .../fundamentals/flows/what-is-a-flow.md | 60 ++++---- content/en/docs/2024.9/Whats New/_index.md | 142 +++++++++++------- data/urls.toml | 27 ++++ 5 files changed, 191 insertions(+), 95 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index bb19dacba..66c9ff41b 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -128,7 +128,7 @@ Affected Components: ##### Saving Output Properties to multiple variables It is now possible to use the [Expression editor][] for output properties. -This supports a new [decomposition syntax][decomposition of output properties] allowing saving selected values from an output property to multiple variables. +This supports a new [decomposition syntax][] allowing saving selected values from an output property to multiple variables. TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/what-is-a-block-property/#output-properties @@ -145,9 +145,7 @@ Affected Components: A new [built-in _executionContext variable][] is now exposed in [processes][process] and [activities][activity]. The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. -TODO - REVIEW LINK TO EXECUTION CONTEXT WHICH SHOULD HAVE SECTION IN -http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/executions/what-is-an-execution/ - +TODO - REVIEW LINK TO EXECUTION CONTEXT WHICH SHOULD HAVE SECTION Affected Components: @@ -448,7 +446,7 @@ The [What is a Flow][] documentation has been updated to include information on ##### Decomposition of Output properties -The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][] feature. +The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][decomposition syntax] feature. TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions @@ -685,6 +683,7 @@ Releases are currently forecast to be made available on: [.NET 8]: {{< url path="Cortex.Reference.Glossary.A-E.DotNet" >}} [API]: {{< url path="Cortex.Reference.Glossary.A-E.API" >}} [Service Fabric]: {{< url path="Cortex.Reference.Glossary.P-T.ServiceFabric" >}} +[built-in _executionContext variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Executions.WhatIsAnExecution.ExecutionContext" version="2024.9" >}} [Innovation Only - Single Server - Without HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.SingleServerWithoutHA.MainDoc" version="2024.9" >}} [Innovation Only - Multiple Server - With HA]: {{< url path="Cortex.GettingStarted.OnPremise.InstallInnovationOnly.MultipleServerWithHA.MainDoc" version="2024.9" >}} diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/executions/what-is-an-execution.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/executions/what-is-an-execution.md index b13d9dde7..24b5b691f 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/executions/what-is-an-execution.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/executions/what-is-an-execution.md @@ -48,6 +48,48 @@ When a [flow][] starts the execution of a child flow using the [Run Flow][] bloc | Ended | The execution has ended normally | | Error | The execution has ended after having thrown an exception that was not handled | +## Execution Context + +Executions have their own context that contains specific information about the current execution. This can be accessed via the built-in `_executionContext` [variable][] and currently contains the following properties: + +- [Initiator][] +- [Extensions][] + +### Initiator + +The initiator is a read-only property that contains the following information about the user that initiated the execution: + +- `Name`: The name of the user that initiated the execution. +- `AuthenticationType`: The authentication type of the user that initiated the execution. +- `IsAuthenticated`: A boolean value indicating if the user that initiated the execution is authenticated. This should always be `true`. +- `Claims`: A list of claims associated with the user that initiated the execution. + +The values can be accessed using [property expression][] or dictionary [index expressions][] syntax, as follows: + +```csharp +($)_executionContext.Initiator.Name +``` + +```csharp +($)_executionContext.Initiator["Name"] +``` + +### Extensions + +The `Extensions` property can be used to store additional information. This data will be accessible to all blocks within the execution, including child executions. + +A value can be added to the `Extensions` property using the [expression editor][], using the dictionary [index expressions][] syntax, for example: + +```csharp +($)_executionContext.Extensions["key"] = "value"; +``` + +The value can be accessed in the same way, for example: + +```csharp +($)_executionContext.Extensions["key"] +``` + ## Remarks ### Known Limitations @@ -75,6 +117,8 @@ None None [Execution Status]: {{< ref "#execution-status" >}} +[Extensions]: {{< ref "#extensions" >}} +[Initiator]: {{< ref "#initiator" >}} [Executions in Development]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Executions.ExecutionsInDevelopment.MainDoc" >}} [Executions in Production]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Executions.ExecutionsInProduction.MainDoc" >}} @@ -98,3 +142,7 @@ None [Execution Service]: {{< url path="Cortex.Reference.Apis.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" >}} [Run Flow]: {{< url path="Cortex.Reference.Blocks.Flows.RunFlow.RunFlow.MainDoc" >}} + +[expression editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[index expressions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.IndexExpressions" >}} +[Property expression]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.PropertyExpressions" >}} diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md index 49c00f1c9..8f09aece4 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md @@ -9,7 +9,7 @@ weight: 1 ## Summary -A flow is an object in [{{% ctx %}} Studio][CORTEX Studio] that contains the logic and actions (in the form of [blocks][] and [workspaces][]) that is able to be executed on a {{% ctx %}} Innovation platform. +A flow is an object in [{{% ctx %}} Studio][CORTEX Studio] that contains the logic and actions (in the form of [blocks][] and [workspaces][]) that is able to be executed on a {{% ctx %}} platform. ## Anatomy of a Flow @@ -24,24 +24,40 @@ Processes are a type of [Flow][] that can contain multiple [Activities][Activity {{< figure src="/images/top-level-workspace-process.svg" title="Example Process" >}} +* Processes flow from left to right +* Processes can call other processes +* Processes can call activities +* Processes only contain a subset of blocks as they are intended to model high-level business processes, not low-level implementation of tasks or actions + ### Activity -Activities are a type of [Flow][] that can be used to model tasks or actions. +Activities are a type of [Flow][] that can be used to model low-level tasks or actions. {{< figure src="/images/top-level-workspace-activity.svg" title="Example Activity" >}} -## Composition of a flow +* Activities flow from top to bottom +* Activities can call other activities +* Activities cannot call processes +* Activities contain all blocks as they are intended to model low-level tasks or actions + +## Composition of a Flow -Flows are composed of the following blocks: +Flows are composed of the following: +* [Workspace][Workspace ref] * [Start Flow block][] * [Action blocks][] -* [Decision block][] +* [Decision blocks][Decision blocks ref] * [Workspace blocks][] * [End Flow block][] * [Handle Flow Exception block][] -* [Flow Variable Store][Flow Variable Store ref] -* [Workspace][Workspace ref] + +### Workspace + +The [Top-Level Workspace][] within the flow. + +* Canvas on which blocks are placed and connected to create the flow logic +* See [Workspace][workspaces] ### Start Flow block @@ -62,14 +78,12 @@ Performs a specific action. Causes the [flow execution][] to branch, dependent on a condition. -* Icon on block indicates type of condition causing branching * See [Decision Blocks][Decision Blocks] ### Workspace blocks Contains grouped flow logic. -* The turndown on the top-right of the icon indicates it contains a [workspace][], which can be opened by double-clicking the icon * See [Workspace][Workspace Block] block ### End Flow block @@ -84,28 +98,9 @@ Ends the [flow execution][]. Handles [flow level exceptions][], thrown during the [flow execution][]. * Automatically created when the flow is created -* The turndown on the top-right of the icon indicates it contains a [workspace][workspaces], which can be opened by double-clicking the icon * Cannot be deleted * See [Handle Flow Exception][] block -### Flow Variable Store - -Stores variables that can be used within the flow. - -* The [Variables Grid][] can be opened by double-clicking the icon, the scope will be set to `Defined (Selected Workspace)` -* Cannot be deleted - -{{% alert title="Note" %}} -This is deprecated in favour of the {{< ahref path="Cortex.Guides.Studio.SouthPanel.VariablesGrid" title="Variables Grid" >}} -{{% /alert %}} - -### Workspace - -The [Top-Level Workspace][] within the flow. - -* Canvas on which blocks are placed and connected to create the flow logic -* See [Workspace][workspaces] - ## Grouping Logic within a Flow All the logic of a flow can exist on the [Top-Level Workspace][], however, this can quickly become difficult to maintain and understand as the numbers of blocks increase. Blocks can be grouped into workspaces in order to reduce the complexity and make the flow easier to maintain. @@ -120,7 +115,7 @@ A [flow execution][flow execution] may be started by: * [Debugging][] a flow in [{{% ctx %}} Studio][CORTEX Studio] * Triggering it by making an HTTP request from an external source (e.g. a web application or web hooks) -* Triggering it using the [Run Flow][] block +* Triggering it using the [Run Flow][] and [Run Flow Async][] block * Triggering it using predefined events (future) (e.g. on receipt of an email) * Scheduling it to execute at predetermined times @@ -156,6 +151,7 @@ Currently, it is not possible to have a [Handle Workspace Exception][] block on * [Start Flow][] * [End Flow][] * [Run Flow][] +* [Run Flow Async][] * [Handle Flow Exception][] * [Handle Workspace Exception][] * [Workspace][Workspace Block] @@ -170,11 +166,10 @@ None [Start Flow block]: {{< ref "#start-flow-block" >}} [Action blocks]: {{< ref "#action-blocks" >}} -[Decision block]: {{< ref "#decision-block" >}} +[Decision blocks ref]: {{< ref "#decision-block" >}} [Workspace blocks]: {{< ref "#workspace-blocks" >}} [End Flow block]: {{< ref "#end-flow-block" >}} [Handle Flow Exception block]: {{< ref "#handle-flow-exception-block" >}} -[Flow Variable Store ref]: {{< ref "#flow-variable-store" >}} [Workspace ref]: {{< ref "#workspace" >}} [blocks]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.MainDoc" >}} @@ -200,6 +195,7 @@ None [CORTEX Studio]: {{< url path="Cortex.Guides.Studio.MainDoc" >}} [Debugging]: {{< url path="Cortex.Guides.Studio.Debugging.MainDoc" >}} -[Variables Grid]: {{< url path="Cortex.Guides.Studio.SouthPanel.VariablesGrid" >}} [Run Flow]: {{< url path="Cortex.Reference.Blocks.Flows.RunFlow.RunFlow.MainDoc" >}} + +[Run Flow Async]: {{< url path="Cortex.Reference.Blocks.Flows.RunFlow.RunFlowAsync.MainDoc" >}} diff --git a/content/en/docs/2024.9/Whats New/_index.md b/content/en/docs/2024.9/Whats New/_index.md index 435ab549f..5ecbbc50e 100644 --- a/content/en/docs/2024.9/Whats New/_index.md +++ b/content/en/docs/2024.9/Whats New/_index.md @@ -7,90 +7,116 @@ weight: 1 ## Summary -2024.7 is the next [Fast Track][] release of {{% ctx %}} and improves on the [2024.5][] release in the following areas: +2024.9 is the second [Release][] of the next generation of {{% ctx %}} and improves on the [2024.7][] release in the following areas: -* [Performance][] -* [Security][] +* [Capability][] +* [Observability][] * [Scalability][] +* [Security][] * [Usability][] +* [Third-Party Support][] +* [Installation][] +* [Upgrade][] * [Documentation][] -## Improved Performance +## Improved Capability + +This release introduces multiple new features to the {{% ctx %}} platform: + +* The concept of [Process and Activity][], which are types of [Flow][], has now been introduced to {{% ctx %}} Gateway. +* [Saving Output Properties to multiple variables][] is now supported. +* A new built-in [execution context variable][] has been added to the Flow Engine which contains the initiator. +* A new [Proxy for the {{% ctx %}} 7 Flow API][] has been added to the platform. -This release shows performance improvements in a number of areas: +## Improved Observability -* [Reduce the number of license check calls][] -* [Reduce memory usage of the Package Management Service][] by compressing the Flow JSON -* Fixed a bug where the [Expression editor in {{% ctx %}} Studio leaks memory][] +Observability has been improved by [adding logging to blocks that communicate with external systems][Logging added to blocks that communicate with external systems]. + +## Improved Scalability + +Optimisation to scalability has been made by [reducing the total number of NServiceBus endpoints and RabbitMQ queues][Reduction of total number of NServiceBus endpoints and RabbitMQ queues]. ## Improved Security We increased the security of the platform by: -* [Redacting any value in logs that has the format of an encrypted text][Redact any value in logs that has the format of an encrypted text] to ensure that encrypted text is not visible in logs -* [Adding the Request user to API Gateway HTTPEvent logs][Request user has been added to API Gateway HTTPEvent logs] to provide more information in logs -* Fixed a bug where [Password redaction not always occurring][]. +* [Upgrading the OpenSSL version][Upgrade OpenSSL] shipped with the platform. +* Added [Multi-domain certificates support][]. +* A [CortexManagementUser for RabbitMQ is now created during upgrade][New CortexManagementUser added to manage RabbitMQ queues]. +* [Server-side validation added to {{% ctx %}} Gateway API][] to prevent [Path Traversal][] attacks. +* Removal of the [refresh token cookie on sign out][remove refresh token cookie on sign out]. -## Improved Scalability +## Improved Usability -Scalability has been improved by adding [support of custom names for default Tenant and System][Custom names supported for default Tenant and System] from {{% ctx %}} Gateway, as well as [support for installing multiple {{% ctx %}} Gateway instances on the same Web App Server][]. +The usability of the platform has been improved by: -## Improved Usability +* Renaming the [Flows Charm to Dev and changing the icon][Rename Flows Charm to Dev and change icon]. +* Renaming the [Settings Charm to Admin and changing the icon][Rename Settings Charm to Admin and change icon]. + +## Improved Third-Party Support + +Third-party Support has been improved by [upgrading the platform to .NET 8][Upgrade to .NET 8]. -The previous `Scope` data type has been renamed to [ScopeDefinition][] as it more accurately reflects its purpose of defining a scope; allowing for a new [Scope][] data type to represent an instance of a scope. -\ -The [user experience of {{% ctx %}} Gateway][{{% ctx %}} Gateway] has seen improvements which include: +## Improved Installation -* [Improving the Home page loading placeholder][Improved Home page loading placeholder] -* [Improving the Search bar styling][Improved Search bar styling] +Installation when [files are blocked by the operating system][Support installation when files are blocked by the operating system] due to the `Zone.Identifier` is now supported. -A bug has been fixed on the [Engine][] where a [Flow with expression sometimes fails to execute with a KeyNotFoundException][]. +## Improved Upgrade + +The upgrade process has been improved by: + +* [Supporting upgrade when files are blocked by the operating system][Support upgrade when files are blocked by the operating system]. +* Upgrading the [Execution Service when the engine version is unchanged][Execution Service is upgraded when the engine version is unchanged]. +* [Handling of the Execution Services lifecycle events][]. ## Improved Documentation -The [Product Portal][] includes updates related to: +The documentation includes updates related to: -* [Wireless Blocks][Wireless Blocks section] including data type and exception -* [Execute Data Command Block][Execute Data Command Block section] and data types -* [Scope and ScopeDefinition][] data types -* [Upgrade steps][Upgrade section] from 2024.5 to 2024.7 -* [Block Icons][] -* [Incorrect link in Multiple Server Install Web Application Prerequisites][] +* New concepts such as [Process and Activity][Process and Activity Documentation] as well as [Decomposition of Output properties][]. +* [Preventing deadlocks when using semaphores][Prevent deadlocks when using semaphores]. +* [Updating screenshots][screenshots updated] to reflect the new branding. +* [Flow compatibility version][Flow compatibility version introduced] being added to the release notes. +* [General improvements to the documentation][]. -For a full list of what has been introduced in this release, please see the [2024.7 Release Notes][] +For a full list of what has been introduced in this release, please see the [2024.9 Release Notes][] -[Fast Track]: {{< url path="Cortex.Reference.Glossary.F-J.FastTrack" version="2024.7" >}} +[Release]: {{< url path="Cortex.Reference.Glossary.P-T.Release" version="2024.9" >}} +[2024.7]: {{< url path="Cortex.Blogs.Releases.2024.7.MainDoc" version="2024.9" >}} -[Performance]: {{< ref "#improved-performance" >}} -[Security]: {{< ref "#improved-security" >}} +[Capability]: {{< ref "#improved-capability" >}} +[Observability]: {{< ref "#improved-observability" >}} [Scalability]: {{< ref "#improved-scalability" >}} +[Security]: {{< ref "#improved-security" >}} [Usability]: {{< ref "#improved-usability" >}} +[Third-Party Support]: {{< ref "#improved-third-party-support" >}} +[Installation]: {{< ref "#improved-installation" >}} +[Upgrade]: {{< ref "#improved-upgrade" >}} [Documentation]: {{< ref "#improved-documentation" >}} -[Reduce the number of license check calls]: {{< url path="Cortex.Blogs.Releases.2024.7.ReduceTheNumberOfLicenseCheckCalls" version="2024.7" >}} -[Reduce memory usage of the Package Management Service]: {{< url path="Cortex.Blogs.Releases.2024.7.ReduceMemoryUsageOfThePackageManagementService" version="2024.7" >}} -[Expression editor in {{% ctx %}} Studio leaks memory]: {{< url path="Cortex.Blogs.Releases.2024.7.ExpressionEditorInCortexStudioLeaksMemory" version="2024.7" >}} -[Redact any value in logs that has the format of an encrypted text]: {{< url path="Cortex.Blogs.Releases.2024.7.RedactAnyValueInLogsThatHasTheFormatOfAnEncryptedText" version="2024.7" >}} -[Request user has been added to API Gateway HTTPEvent logs]: {{< url path="Cortex.Blogs.Releases.2024.7.RequestUserHasBeenAddedToApiGatewayHttpEventLogs" version="2024.7" >}} -[Password redaction not always occurring]: {{< url path="Cortex.Blogs.Releases.2024.7.PasswordRedactionNotAlwaysOccurring" version="2024.7" >}} -[Custom names supported for default Tenant and System]: {{< url path="Cortex.Blogs.Releases.2024.7.CustomNamesSupportedForDefaultTenantAndSystem" version="2024.7" >}} -[support for installing multiple {{% ctx %}} Gateway instances on the same Web App Server]: {{< url path="Cortex.Blogs.Releases.2024.7.SupportForInstallingMultipleCortexGatewayInstancesOnTheSameWebAppServer" version="2024.7" >}} -[{{% ctx %}} Gateway]: {{< url path="Cortex.Blogs.Releases.2024.7.CortexGateway" version="2024.7" >}} -[Improved Home page loading placeholder]: {{< url path="Cortex.Blogs.Releases.2024.7.ImprovedHomePageLoadingPlaceholder" version="2024.7" >}} -[Improved Search bar styling]: {{< url path="Cortex.Blogs.Releases.2024.7.ImprovedSearchBarStyling" version="2024.7" >}} -[Engine]: {{< url path="Cortex.Blogs.Releases.2024.7.Engine" version="2024.7" >}} -[Flow with expression sometimes fails to execute with a KeyNotFoundException]: {{< url path="Cortex.Blogs.Releases.2024.7.FlowWithExpressionSometimesFailsToExecuteWithAKeyNotFoundException" version="2024.7" >}} -[Product Portal]: {{< url path="Cortex.Blogs.Releases.2024.7.ProductPortal" version="2024.7" >}} -[Wireless Blocks section]: {{< url path="Cortex.Blogs.Releases.2024.7.WirelessBlocks" version="2024.7" >}} -[Execute Data Command Block section]: {{< url path="Cortex.Blogs.Releases.2024.7.ExecuteDataCommandBlock" version="2024.7" >}} -[Scope and ScopeDefinition]: {{< url path="Cortex.Blogs.Releases.2024.7.ScopeandScopeDefinition" version="2024.7" >}} -[Block Icons]: {{< url path="Cortex.Blogs.Releases.2024.7.BlockIcons" version="2024.7" >}} -[upgrade section]: {{< url path="Cortex.Blogs.Releases.2024.7.Upgrade" version="2024.7" >}} -[Incorrect link in Multiple Server Install Web Application Prerequisites]: {{< url path="Cortex.Blogs.Releases.2024.7.IncorrectLinkInMultipleServerInstallWebApplicationPrerequisites" version="2024.7" >}} - -[Scope]: {{< url path="Cortex.Reference.DataTypes.Scopes.Scope.MainDoc" version="2024.7">}} -[ScopeDefinition]: {{< url path="Cortex.Reference.DataTypes.Scopes.ScopeDefinition.MainDoc" version="2024.7">}} - -[2024.7 Release Notes]: {{< url path="Cortex.Blogs.Releases.2024.7.MainDoc" version="2024.7" >}} - -[2024.5]: {{< url path="Cortex.Blogs.Releases.2024.5.MainDoc" version="2024.7" >}} +[Process and Activity]: {{< url path="Cortex.Blogs.Releases.2024.9.ProcessAndActivity" version="2024.9" >}} +[Saving Output Properties to multiple variables]: {{< url path="Cortex.Blogs.Releases.2024.9.SaveOutputPropertiesToMultipleVariables" version="2024.9" >}} +[execution context variable]: {{< url path="Cortex.Blogs.Releases.2024.9.ExecutionContextVariable" version="2024.9" >}} +[Proxy for the {{% ctx %}} 7 Flow API]: {{< url path="Cortex.Blogs.Releases.2024.9.ProxyForTheCortex7FlowApi" version="2024.9" >}} +[Logging added to blocks that communicate with external systems]: {{< url path="Cortex.Blogs.Releases.2024.9.LoggingAddedToBlocksThatCommunicateWithExternalSystems" version="2024.9" >}} +[Reduction of total number of NServiceBus endpoints and RabbitMQ queues]: {{< url path="Cortex.Blogs.Releases.2024.9.ReductionOfTotalNumberOfNServiceBusEndpointsAndRabbitMQQueues" version="2024.9" >}} +[Upgrade OpenSSL]: {{< url path="Cortex.Blogs.Releases.2024.9.UpgradeOpenSSL" version="2024.9" >}} +[Multi-domain certificates support]: {{< url path="Cortex.Blogs.Releases.2024.9.MultiDomainCertificatesSupport" version="2024.9" >}} +[New CortexManagementUser added to manage RabbitMQ queues]: {{< url path="Cortex.Blogs.Releases.2024.9.NewCortexManagementUserAddedToManageRabbitMQQueues" version="2024.9" >}} +[Server-side validation added to {{% ctx %}} Gateway API]: {{< url path="Cortex.Blogs.Releases.2024.9.ServerSideValidationAddedToCortexGatewayAPI" version="2024.9" >}} +[Remove refresh token cookie on sign out]: {{< url path="Cortex.Blogs.Releases.2024.9.RemoveRefreshTokenCookieOnSign" version="2024.9" >}} +[Rename Flows Charm to Dev and change icon]: {{< url path="Cortex.Blogs.Releases.2024.9.RenameFlowsCharmToDevAndChangeIcon" version="2024.9" >}} +[Rename Settings Charm to Admin and change icon]: {{< url path="Cortex.Blogs.Releases.2024.9.RenameSettingsCharmToAdminAndChangeIcon" version="2024.9" >}} +[Upgrade to .NET 8]: {{< url path="Cortex.Blogs.Releases.2024.9.UpgradeToNet8" version="2024.9" >}} +[Support installation when files are blocked by the operating system]: {{< url path="Cortex.Blogs.Releases.2024.9.SupportInstallationWhenFilesAreBlockedByTheOperatingSystem" version="2024.9" >}} +[Support upgrade when files are blocked by the operating system]: {{< url path="Cortex.Blogs.Releases.2024.9.SupportUpgradeWhenFilesAreBlockedByTheOperatingSystem" version="2024.9" >}} +[Execution Service is upgraded when the engine version is unchanged]: {{< url path="Cortex.Blogs.Releases.2024.9.ExecutionServiceIsUpgradedWhenTheEngineVersionIsUnchanged" version="2024.9" >}} +[Handling of the Execution Services lifecycle events]: {{< url path="Cortex.Blogs.Releases.2024.9.HandlingOfTheExecutionServicesLifecycleEvents" version="2024.9" >}} +[Process and Activity Documentation]: {{< url path="Cortex.Blogs.Releases.2024.9.ProcessAndActivityDocumentation" version="2024.9" >}} +[Decomposition of Output properties]: {{< url path="Cortex.Blogs.Releases.2024.9.DecompositionOfOutputProperties" version="2024.9" >}} +[Prevent deadlocks when using semaphores]: {{< url path="Cortex.Blogs.Releases.2024.9.PreventDeadlocksWhenUsingSemaphores" version="2024.9" >}} +[Screenshots updated]: {{< url path="Cortex.Blogs.Releases.2024.9.ScreenshotsUpdated" >}} +[Flow compatibility version introduced]: {{< url path="Cortex.Blogs.Releases.2024.9.FlowCompatibilityVersionIntroduced" version="2024.9" >}} +[General improvements to the documentation]: {{< url path="Cortex.Blogs.Releases.2024.9.GeneralImprovementsToTheDocumentation" version="2024.9" >}} + +[2024.9 Release Notes]: {{< url path="Cortex.Blogs.Releases.2024.9.MainDoc" version="2024.9" >}} diff --git a/data/urls.toml b/data/urls.toml index 281a4dda5..8845f7b17 100644 --- a/data/urls.toml +++ b/data/urls.toml @@ -8,6 +8,32 @@ MainDoc = "/blog/releases" [Cortex.Blogs.Releases.2024.X] MainDoc = "/blog/releases/2024.x" + [Cortex.Blogs.Releases.2024.9] + MainDoc = "/blog/2024/10/07/2024.9/" + ProcessAndActivity = "/blog/2024/10/07/2024.9/#process-and-activity" + SaveOutputPropertiesToMultipleVariables = "/blog/2024/10/07/2024.9/#saving-output-properties-to-multiple-variables" + ExecutionContextVariable = "/blog/2024/10/07/2024.9/#execution-context-variable" + ProxyForTheCortex7FlowApi = "/blog/2024/10/07/2024.9/#proxy-for-the-cortex-7-flow-api" + LoggingAddedToBlocksThatCommunicateWithExternalSystems = "/blog/2024/10/07/2024.9/#logging-added-to-blocks-that-communicate-with-external-systems" + ReductionOfTotalNumberOfNServiceBusEndpointsAndRabbitMQQueues = "/blog/2024/10/07/2024.9/#reduction-of-total-number-of-nservicebus-endpoints-and-rabbitmq-queues" + UpgradeOpenSSL = "/blog/2024/10/07/2024.9/#upgrade-openssl" + MultiDomainCertificatesSupport = "/blog/2024/10/07/2024.9/#multi-domain-certificates-support" + NewCortexManagementUserAddedToManageRabbitMQQueues = "/blog/2024/10/07/2024.9/#new-cortexmanagementuser-added-to-manage-rabbitmq-queues" + ServerSideValidationAddedToCortexGatewayAPI = "/blog/2024/10/07/2024.9/#server-side-validation-added-to-cortex-gateway-api" + RemoveRefreshTokenCookieOnSign = "/blog/2024/10/07/2024.9/#remove-refresh-token-cookie-on-sign-out" + RenameFlowsCharmToDevAndChangeIcon = "/blog/2024/10/07/2024.9/#rename-flows-charm-to-dev-and-change-icon" + RenameSettingsCharmToAdminAndChangeIcon = "/blog/2024/10/07/2024.9/#rename-settings-charm-to-admin-and-change-icon" + UpgradeToNet8 = "/blog/2024/10/07/2024.9/#upgrade-to-net-8" + SupportInstallationWhenFilesAreBlockedByTheOperatingSystem = "/blog/2024/10/07/2024.9/#support-installation-when-files-are-blocked-by-the-operating-system" + SupportUpgradeWhenFilesAreBlockedByTheOperatingSystem = "/blog/2024/10/07/2024.9/#support-upgrade-when-files-are-blocked-by-the-operating-system" + ExecutionServiceIsUpgradedWhenTheEngineVersionIsUnchanged = "/blog/2024/10/07/2024.9/#execution-service-is-upgraded-when-the-engine-version-is-unchanged" + HandlingOfTheExecutionServicesLifecycleEvents = "/blog/2024/10/07/2024.9/#handling-of-the-execution-services-lifecycle-events" + ProcessAndActivityDocumentation = "/blog/2024/10/07/2024.9/#process-and-activity-1" + DecompositionOfOutputProperties = "/blog/2024/10/07/2024.9/#decomposition-of-output-properties" + PreventDeadlocksWhenUsingSemaphores = "/blog/2024/10/07/2024.9/#prevent-deadlocks-when-using-semaphores" + ScreenshotsUpdated = "/blog/2024/10/07/2024.9/#screenshots-updated" + FlowCompatibilityVersionIntroduced = "/blog/2024/10/07/2024.9/#flow-compatibility-version-introduced" + GeneralImprovementsToTheDocumentation = "/blog/2024/10/07/2024.9/#general-improvements-to-the-documentation" [Cortex.Blogs.Releases.2024.7] MainDoc = "/blog/2024/08/12/2024.7/" ProductPortal = "/blog/2024/08/12/2024.7/#product-portal" @@ -1353,6 +1379,7 @@ MainDoc = "/docs/reference/concepts/fundamentals/executions/" [Cortex.Reference.Concepts.Fundamentals.Executions.WhatIsAnExecution] MainDoc = "/docs/reference/concepts/fundamentals/executions/what-is-an-execution" + ExecutionContext = "/docs/reference/concepts/fundamentals/executions/what-is-an-execution/#execution-context" [Cortex.Reference.Concepts.Fundamentals.Executions.ExecutionsInDevelopment] MainDoc = "/docs/reference/concepts/fundamentals/executions/executions-in-development" EditAndContinueAnExecution = "/docs/reference/concepts/fundamentals/executions/executions-in-development/#edit-and-continue-an-execution" From b7f5a705095c7c44bb7c2a68f9e703734a4791e7 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Wed, 9 Oct 2024 15:22:22 +0100 Subject: [PATCH 09/18] changed decomposition and added expression editor section --- content/en/blog/releases/2024.X/2024.9.md | 1 + .../property-editors/expression-editor.md | 186 +++++++++++++++++- .../what-is-a-block-property.md | 75 +------ .../2024.9/images/editable/editor-types.png | Bin 47797 -> 51155 bytes .../images/editable/expression-editor.png | Bin 0 -> 8458 bytes .../images/editable/variable-editor.png | Bin 10666 -> 9239 bytes .../set-variable-expression-decomposition.PNG | Bin 0 -> 14983 bytes data/urls.toml | 2 + 8 files changed, 192 insertions(+), 72 deletions(-) create mode 100644 content/static/2024.9/images/editable/expression-editor.png create mode 100644 content/static/2024.9/images/set-variable/set-variable-expression-decomposition.PNG diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index 66c9ff41b..f91e82217 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -679,6 +679,7 @@ Releases are currently forecast to be made available on: [Gateway]: {{< url path="Cortex.Guides.Gateway.MainDoc" version="2024.9" >}} [Expression Editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" version="2024.9" >}} +[decomposition syntax]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.WhatIsABlockProperty.DecomposingOutputProperties" version="2024.9" >}} [.NET 8]: {{< url path="Cortex.Reference.Glossary.A-E.DotNet" >}} [API]: {{< url path="Cortex.Reference.Glossary.A-E.API" >}} diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md index 102f1fb9f..d0f6c0b69 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md @@ -264,6 +264,7 @@ Types of expressions: - [Enums][Enum expressions] - [Casting][Casting expressions] - [Indexes][Index expressions] +- [Decomposition][Decomposition expressions] ([output property][] only) ### Arithmetic expressions @@ -556,6 +557,184 @@ In the examples below assume: | `($)Structure["SecondKey"][0]` | `1` | The first item within the item with key `"SecondKey"` is returned | | `($)String[0]` | `'S'` | The first character in the string is returned | +### Decomposition expressions + +{{< figure src="/images/set-variable/set-variable-expression-decomposition.PNG" >}} + +Decomposition expressions are used to extract the properties of an [Output property][Output properties] and store them in [variables][Variables Concept]. + +{{% alert title="Note" %}} +This is currently only supported by output properties. +{{% /alert %}} + +[Output properties][] can be decomposed using the decomposition syntax which includes the following syntaxes: + +- [Property expression][Property expressions] +- [Index expression][Index expressions] + +The decomposition syntax follows a very similar pattern to a `JSON` object: + +- each `key` is the property path expression, where `$` is the root of the output value. +- each `value` is the variable name, prefixed with `($)`. + +```json +{ + "$.property.firstPath": ($)FirstVariable, + "$.property.secondPath": ($)SecondVariable +} +``` + +The examples below assumes that the output value contains the following JSON object: + +``` json +{ + "company": { + "name": "Company Name", + "department": [ + { + "name": "HR", + "employees": [ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } + ] + }, + { + "name": "Admin", + "employees": [ + { + "name": "Jane Blogs", + "id": "103" + }, + { + "name": "Joe Doe", + "id": "104" + } + ] + } + ] + } +} +``` + +### Decomposing an object property + +To decompose this structure and store the departments, the syntax would be: + +```json +{ + "$.company.department": ($)ListOfDepartment +} +``` + +In this example, the variable `($)ListOfDepartment` will be set to the following value: + +```json +[ + { + "name": "HR", + "employees": [ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } + ] + }, + { + "name": "Admin", + "employees": [ + { + "name": "Jane Blogs", + "id": "103" + }, + { + "name": "Joe Doe", + "id": "104" + } + ] + } +] +``` + +### Decomposing a list item + +To decompose this structure and store the first `department`, the syntax would be: + +```json +{ + "$.company.department[0]": ($)FirstDepartment +} +``` + +In this example, the variable `($)FirstDepartment` will be set to the following value: + +```json +{ + "name": "HR", + "employees": [ + { + "name": "Joe Blogs", + "id": "101" + }, + { + "name": "Jane Doe", + "id": "102" + } + ] +} +``` + +### Decomposing the last list item + +To decompose this structure and store the last `employee` of the first `department`, the syntax would be: + +```json +{ + "$.company.department[0].employees[-1]": ($)LastEmployeeOfFirstDepartment +} +``` + +In this example, the variable `($)LastEmployeeOfFirstDepartment` will be set to the following value: + +```json +{ + "name": "Jane Doe", + "id": "102" +} +``` + +### Decomposing multiple properties at the same time + +To decompose this structure and store the `id` and `name` of the first `employee` of the first `department`, the syntax would be: + +```json +{ + "$.company.department[0].employees[0].id": ($)FirstEmployeeId, + "$.company.department[0].employees[0].name": ($)FirstEmployeeName +} +``` + +In this example, the variable `($)FirstEmployeeId` will be set to the following value: + +```json +"101" +``` + +And the variable `($)FirstEmployeeName` will be set to the following value: + +```json +"Joe Blogs" +``` + ## Remarks ### Known Limitations @@ -643,8 +822,6 @@ This may change in future to allow developers to specifically select which of th [Dictionary literal]: {{< ref "#dictionary-literal" >}} [Structure literal]: {{< ref "#structure-literal" >}} [List literal]: {{< ref "#list-literal" >}} -[Conc]: {{< ref "#list-literal" >}} -[List literal]: {{< ref "#list-literal" >}} [Concatenated Strings]: {{< ref "#concatenated-strings" >}} [Interpolated Strings]: {{< ref "#interpolated-strings" >}} [Verbatim Strings]: {{< ref "#verbatim-strings" >}} @@ -662,6 +839,7 @@ This may change in future to allow developers to specifically select which of th [Enum expressions]: {{< ref "#enum-expressions" >}} [Casting expressions]: {{< ref "#casting-expressions" >}} [Index expressions]: {{< ref "#index-expressions" >}} +[Decomposition expressions]: {{< ref "#output-property-decomposition-expressions" >}} [Data Type]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.MainDoc" >}} @@ -687,19 +865,16 @@ This may change in future to allow developers to specifically select which of th [Double]: {{< url path="Cortex.Reference.DataTypes.Numbers.Double.MainDoc" >}} [List]: {{< url path="Cortex.Reference.DataTypes.Collections.List.MainDoc" >}} [Create a List]: {{< url path="Cortex.Reference.DataTypes.Collections.List.CreateNew" >}} -[Object]: {{< url path="Cortex.Reference.DataTypes.All.Object.MainDoc" >}} [Single]: {{< url path="Cortex.Reference.DataTypes.Numbers.Single.MainDoc" >}} [Single.MaxValue]: {{< url path="MSDocs.DotNet.Api.System.Single.MaxValue" >}} [Single.MinValue]: {{< url path="MSDocs.DotNet.Api.System.Single.MinValue" >}} [String]: {{< url path="Cortex.Reference.DataTypes.Text.String.MainDoc" >}} -[Char]: {{< url path="Cortex.Reference.DataTypes.Text.Char.MainDoc" >}} [Collection]: {{< url path="Cortex.Reference.DataTypes.Collections.MainDoc" >}} [Structure]: {{< url path="Cortex.Reference.DataTypes.Collections.Structure.MainDoc" >}} [Create a Structure]: {{< url path="Cortex.Reference.DataTypes.Collections.Structure.CreateNew" >}} [Workspaces]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Workspaces.MainDoc" >}} [workspace]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Workspaces.WhatIsAWorkspace.MainDoc" >}} -[Workspace Scope]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Variables.VariableScopes.MainDoc" >}} [Variables Concept]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Variables.MainDoc" >}} [Variables: What Is a Variable]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Variables.WhatIsAVariable.MainDoc" >}} @@ -712,7 +887,6 @@ This may change in future to allow developers to specifically select which of th [implicitly cast]: {{< url path="Cortex.Reference.Concepts.WorkingWith.Objects.ObjectCasting.ImplicitCast" >}} [Blocks]: {{< url path="Cortex.Reference.Blocks.MainDoc" >}} -[Set Variable]: {{< url path="Cortex.Reference.Blocks.Variables.SetVariable.SetVariable.MainDoc" >}} [Expression Editor]: {{< url path="Cortex.Guides.Studio.ExpressionEditor.MainDoc" >}} diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md index 57a531f79..0fec4c150 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/what-is-a-block-property.md @@ -33,11 +33,9 @@ Input properties can be configured using the following editors: {{< figure src="/images/editable/editor-types.png" >}} -The icons used for Input properties are dark blue to distinguish them from [Output Properties][] or [InputOutput Properties][]. - ### Output Properties -Output properties are used to save values from a [block][]. These properties can be saved to a variable or decomposed to be saved into multiple variables during the block's execution. +Output properties are used to save values from a [block][]. These properties can be saved to a variable or [decomposed][Decomposing Output Properties] to be saved into multiple variables during the block's execution. Values from Output properties can be [discarded][Discarding Outputs], this means they will not be saved to any variable. @@ -49,72 +47,15 @@ Output properties can be configured using the following editors: {{< figure src="/images/editable/variable-editor.png" >}} -The icon used for Output properties are light blue to distinguish them from [Input Properties][]. +- [Expression Editor][] using [decomposition][Decomposing Output Properties] + +{{< figure src="/images/editable/expression-editor.png" >}} #### Decomposing Output Properties -Output values can be decomposed to allow the saving of different parts of the value to different variables. - -To decompose an output value, the output property will need to be set to an expression. As an example, an output value value contains a Json object, e.g: - -``` json -{ - "company": { - "name": "Company Name", - "department": [ - { - "name": "HR", - "employees": [ - { - "name": "Joe Blogs", - "id": "101" - }, - { - "name": "Jane Doe", - "id": "102" - } - ] - } - ] - } -} -``` - -To decompose this structure and store a part of the value to a variable, e.g. to get the employees for the first department, the syntax would be: - -```text -{"$.company.department[0].employees": ($)VariableNameToStore} -``` - -In this example, this would set the variable to be: - -```json -{ - { - "name": "Joe Blogs", - "id": "101" - }, - { - "name": "Jane Doe", - "id": "102" - } -} -``` - -To set the variable to the last value `-1` should be used for the index: - -```text -{"$.company.department[0].employees[-1]": ($)VariableNameToStore} -``` - -In this example, this would set the variable to be: - -```json -{ - "name": "Jane Doe", - "id": "102" -} -``` +Output values can be [decomposed][Decomposition expressions] to allow the saving of different parts of the value to different variables. + +To [decompose][Decomposition expressions] an output value, the output property will need to be set to an expression. #### Discarding Outputs @@ -181,6 +122,7 @@ None [Input Properties]: {{< ref "#input-properties" >}} [Output Properties]: {{< ref "#output-properties" >}} [InputOutput Properties]: {{< ref "#inputoutput-properties" >}} +[Decomposing Output Properties]: {{< ref "#decomposing-output-properties" >}} [Discarding Outputs]: {{< ref "#discarding-outputs" >}} [All Blocks]: {{< url path="Cortex.Reference.Blocks.MainDoc" >}} @@ -193,6 +135,7 @@ None [Literal Editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.LiteralEditor.MainDoc" >}} [Variable Editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.VariableEditor.MainDoc" >}} [Expression Editor]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.MainDoc" >}} +[Decomposition expressions]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Blocks.BlockProperties.PropertyEditors.ExpressionEditor.DecompositionExpressions" >}} [Fundamentals Data Types]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.MainDoc" >}} diff --git a/content/static/2024.9/images/editable/editor-types.png b/content/static/2024.9/images/editable/editor-types.png index 106dbb03bf467b1adb7342f837d85a58d2298e82..444627859159f0f95531ee6bbbed0b95b1395e1f 100644 GIT binary patch literal 51155 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 literal 47797 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

-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 diff --git a/content/static/2024.9/images/editable/expression-editor.png b/content/static/2024.9/images/editable/expression-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..5660a432175dc9194c28e7045749eab1b184a8e9 GIT binary patch literal 8458 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 WI~}9SzX5-4D6<+}hLySzum3NR1EL)O literal 0 HcmV?d00001 diff --git a/content/static/2024.9/images/editable/variable-editor.png b/content/static/2024.9/images/editable/variable-editor.png index c1bcb26d4f9a5e217d74ac9b9c0e22021080156d..8e4504cd4eeaa8bf6eb5a68b48f623b6fcde658a 100644 GIT binary patch literal 9239 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 literal 10666 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 diff --git a/content/static/2024.9/images/set-variable/set-variable-expression-decomposition.PNG b/content/static/2024.9/images/set-variable/set-variable-expression-decomposition.PNG new file mode 100644 index 0000000000000000000000000000000000000000..de501792ed93df8215bb3533b8bdf6d498a1595f GIT binary patch literal 14983 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 Date: Wed, 9 Oct 2024 15:29:02 +0100 Subject: [PATCH 10/18] removed notes in release notes --- content/en/blog/releases/2024.X/2024.9.md | 78 ---------------------- content/en/docs/2024.9/Whats New/_index.md | 3 + 2 files changed, 3 insertions(+), 78 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index f91e82217..07a2f1bc5 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -111,13 +111,6 @@ The [concept of Process and Activity][Process and Activity] has been introduced [Processes][Process] are a type of [Flow][] that can contain multiple [Activities][Activity] and are used to model high-level business processes. [Activities][Activity] are a type of [Flow][] that can be used to model tasks or actions. - - - - - - - Affected Components: * [{{% ctx %}} Gateway][Gateway] @@ -129,11 +122,6 @@ Affected Components: It is now possible to use the [Expression editor][] for output properties. This supports a new [decomposition syntax][] allowing saving selected values from an output property to multiple variables. -TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE -http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions -http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/what-is-a-block-property/#output-properties - - Affected Components: @@ -145,8 +133,6 @@ Affected Components: A new [built-in _executionContext variable][] is now exposed in [processes][process] and [activities][activity]. The `_executionContext` variable contains the initiator of the flow execution, as well as an `Extensions` property that can be used to store additional information. -TODO - REVIEW LINK TO EXECUTION CONTEXT WHICH SHOULD HAVE SECTION - Affected Components: @@ -158,21 +144,12 @@ Affected Components: A new proxy for the {{% ctx %}} 7 Flow [API][] has been added to simplify migrating to the platform. This allows for the execution of flows using the same [API][] as the one used in {{% ctx %}} 7. - - - - The [API][] includes the following endpoints: * Encrypt * Run Flow * Run Flow Asynchronously - - - - - By default, the `Run Flow` and `Run Flow Asynchronously` endpoints will run the specified flow within the default package and version. To run the flow in a different package and version, the following [APIs][API] have been added to configure mappings between FlowNames and specific package versions: @@ -181,8 +158,6 @@ To run the flow in a different package and version, the following [APIs][API] ha * Remove single mapping * Remove all mappings - - Affected Components: * [{{% ctx %}} Innovation Core Application][] @@ -215,8 +190,6 @@ The following blocks and properties are logged: * [Response][] * [SSH Logs][] - - Affected Components: * [{{% ctx %}} Innovation Execution Application][] @@ -230,21 +203,6 @@ Affected Components: An exercise has been undertaken to reduce the total number of NServiceBus endpoints and RabbitMQ queues in the platform. This has been achieved by consolidating the endpoints and queues where possible. - - - - - - - - - - - - - - - Affected Components: * [{{% ctx %}} Innovation Core Application][] @@ -267,7 +225,6 @@ Affected Components: ##### Upgrade OpenSSL The OpenSSL version shipped with the platform has been upgraded to the latest version. - Affected Components: @@ -277,7 +234,6 @@ Affected Components: ##### Multi-domain certificates support Support for Multi Domain Certificates in HA deployment is now supported. - Affected Components: @@ -287,7 +243,6 @@ Affected Components: ##### New CortexManagementUser added to manage RabbitMQ queues A new management user for RabbitMQ queues is now created when providing `RabbitMqManagementUser` and `RabbitMqManagementPassword` during installation or upgrade. - Affected Components: @@ -296,7 +251,6 @@ Affected Components: ##### Server-side validation added to {{% ctx %}} Gateway API The {{% ctx %}} Gateway [API][] now includes server-side validation to prevent [Path Traversal][] attacks when creating new flows and groups. - Affected Components: @@ -305,7 +259,6 @@ Affected Components: ##### Remove refresh token cookie on sign out The refresh token cookie is now removed when a user signs out of {{% ctx %}} Gateway, preventing any further use of the token after the user has logged out. - Affected Components: @@ -316,7 +269,6 @@ Affected Components: ##### Rename Flows Charm to Dev and change icon The Flows Charm has been renamed to Dev and the icon has been changed to reflect this. - Affected Components: @@ -325,7 +277,6 @@ Affected Components: ##### Rename Settings Charm to Admin and change icon The Settings Charm has been renamed to Admin and the icon has been changed to reflect this. - Affected Components: @@ -341,7 +292,6 @@ This was required as .NET 6 will be out of support in November. {{% alert title="Note" %}} Upgrade excludes {{% ctx %}} Gateway as currently on .NET Framework 4.7.2 which is not compatible with .NET 8, and still under long term support. {{% /alert %}} - Affected Components: @@ -371,7 +321,6 @@ Affected Components: The latest version of Service Fabric has been included in the artefacts. During upgrade, the Service Fabric cluster version will be upgrade to the packaged version in the artefacts. - Affected Components: @@ -386,7 +335,6 @@ The installation scripts have been amended to unblock files before running if th {{% alert title="Note" %}} `Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. {{% /alert %}} - Affected Components: @@ -402,7 +350,6 @@ The upgrade scripts have been amended to unblock files before running if the ope {{% alert title="Note" %}} `Zone.Identifier` is a file property that indicates a file was downloaded from the internet and is potentially unsafe. Windows uses this property as a protection feature. {{% /alert %}} - Affected Components: @@ -411,7 +358,6 @@ Affected Components: ##### Execution Service is upgraded when the engine version is unchanged The Execution Service will now be upgraded when the engine version is unchanged. This is to ensure the upgrade works, including edge cases such as patches. - Affected Components: @@ -424,10 +370,6 @@ This includes a `Graceful Period timeout` and a `Cancel Period Timeout`, both wh Currently, there is no documentation available on how to do this. For further assistance, please raise a case in the [{{% ctx %}} Service Portal][]. - - - - Affected Components: * [{{% ctx %}} Innovation Core Application][] @@ -442,41 +384,27 @@ Affected Components: ##### Process and Activity The [What is a Flow][] documentation has been updated to include information on the new concepts of [Processes][Process] and [Activities][Activity]. - ##### Decomposition of Output properties The [What is a Block Property][] documentation has been updated to include information on the new [Decomposition of Output properties][decomposition syntax] feature. - -TODO - REVIEW DECOMPOSITION LINKS LOCAL AND OUT FROM THIS PAGE -http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/property-editors/expression-editor/#expressions -http://localhost:1313/docs/2024.9/reference/concepts/fundamentals/blocks/block-properties/what-is-a-block-property/#output-properties - ##### Prevent deadlocks when using semaphores A new section has been added to the documentation explaining how to [prevent deadlocks][] when using semaphores. - ##### Screenshots updated Screenshots within the documentation has been updated to reflect the new branding, including [Blocks][] icons and various [{{% ctx %}} Gateway][] screenshots. - ##### Flow compatibility version introduced The [Flow compatibility version][] has been added to the release notes. - ##### General improvements to the documentation Various improvements have been made to the documentation to improve the overall quality and readability. - - - - - ### Bug Fixes #### Capability @@ -486,9 +414,6 @@ Various improvements have been made to the documentation to improve the overall The Encryptor has been aligned between the {{% ctx %}} Gateway and Service Fabric. This ensures that encrypted values created with the default key can still be decrypted if a custom private key has been set. - - - Affected Components: * [{{% ctx %}} Gateway][Gateway] @@ -499,8 +424,6 @@ Affected Components: A bug has been fixed which prevented the update of certificates after an upgrade. - - Affected Components: * {{% ctx %}} Upgrade Scripts @@ -510,7 +433,6 @@ Affected Components: ##### Missing Platform property in Log Event documentation The Platform property the the Log Event documentation was missing. This has been added to the documentation. - ### Breaking Changes diff --git a/content/en/docs/2024.9/Whats New/_index.md b/content/en/docs/2024.9/Whats New/_index.md index 5ecbbc50e..b9c72c75c 100644 --- a/content/en/docs/2024.9/Whats New/_index.md +++ b/content/en/docs/2024.9/Whats New/_index.md @@ -120,3 +120,6 @@ For a full list of what has been introduced in this release, please see the [202 [General improvements to the documentation]: {{< url path="Cortex.Blogs.Releases.2024.9.GeneralImprovementsToTheDocumentation" version="2024.9" >}} [2024.9 Release Notes]: {{< url path="Cortex.Blogs.Releases.2024.9.MainDoc" version="2024.9" >}} + +[Flow]: {{< url path="Cortex.Reference.Concepts.Fundamentals.Flows.WhatIsAFlow.MainDoc" version="2024.9" >}} +[Path Traversal]: {{< url path="Owasp.PathTraversal.MainDoc" version="2024.9" >}} From 4e84899a1246200862c696f1a239b1c5cb0fd424 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Wed, 9 Oct 2024 16:53:48 +0100 Subject: [PATCH 11/18] updated versions --- content/en/blog/releases/2024.X/2024.7.md | 2 +- content/en/blog/releases/2024.X/2024.9.md | 34 +++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.7.md b/content/en/blog/releases/2024.X/2024.7.md index 4c68329dd..335377c6e 100644 --- a/content/en/blog/releases/2024.X/2024.7.md +++ b/content/en/blog/releases/2024.X/2024.7.md @@ -79,7 +79,7 @@ Finally, the [Product Portal][] includes updates related to: | [{{% ctx %}} Blocks Package][Blocks] | 46.0.4.24340 | Yes | Major | Yes | Flows will need to be [upgraded][upgrade flows steps]

Compatibility Version: 31.24250 | | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | Yes | Major | Yes | The Interaction Portal flows will need to be [upgraded][upgrade flows steps] | | {{% ctx %}} App Server Install Scripts | 5.1.1.24340 | Yes | Patch | No | | -| {{% ctx %}} Web App Server Install Scripts | 10.1.0.24340 | Yes | Major | No | Major changes occurred between internal development releases, however, these changes are not breaking between 2024.5 and 2024.7 | +| {{% ctx %}} Web App Server Install Scripts | 8.0.0.24330 | Yes | Major | No | Major changes occurred between internal development releases, however, these changes are not breaking between 2024.5 and 2024.7 | | {{% ctx %}} Upgrade Scripts | 1.2.0.24210 | TODO | TODO | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 3.1.1.24250 | No | N/A | N/A | | | {{% ctx %}} Encryption Key Generator | 1.2.0.23470 | No | N/A | N/A | | diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index 07a2f1bc5..5cd309935 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -75,23 +75,23 @@ Finally, the [Documentation][] includes updates related to: | Release Component | Version | Updated | Update Type | Breaking Change | Notes | |--------------------------------------------------------------------------------|---------------|---------|---------------|-----------------|--------| -| [{{% ctx %}} Innovation Core Application][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} API Gateway Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Authorisation Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Concurrency Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Configuration Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Data Storage Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Licence Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Listeners Service][] | TODO | Yes | First Release | N/A | | Waiting for AB -|     > [{{% ctx %}} Package Management Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Provisioning Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Scheduling Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Triggers Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Innovation Execution Application][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Service][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the server-side validation of the APIs are [breaking][Breaking - Server-side validation added to {{% ctx %}} Gateway API] between 2024.7 and 2024.9 | Waiting for AB -| [{{% ctx %}} Blocks Package][Blocks] | TODO | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | Waiting for AB +| [{{% ctx %}} Innovation Core Application][] | 53.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} API Gateway Service][] | 38.3.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Authorisation Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Concurrency Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Configuration Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Data Storage Service][] | 9.0.13.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Licence Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Listeners Service][] | 2.0.0.24430 | Yes | First Release | N/A | | Waiting for AB +|     > [{{% ctx %}} Package Management Service][] | 11.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Provisioning Service][] | 13.1.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Scheduling Service][] | 7.0.8.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Triggers Service][] | 11.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Innovation Execution Application][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +|     > [{{% ctx %}} Execution Service][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | 12.3.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the server-side validation of the APIs are [breaking][Breaking - Server-side validation added to {{% ctx %}} Gateway API] between 2024.7 and 2024.9 | Waiting for AB +| [{{% ctx %}} Blocks Package][Blocks] | 48.2.0.24420 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | Waiting for AB | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | | {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | | {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | From 69808c3a75adda009f65f7b611b644425e37641e Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Wed, 9 Oct 2024 17:01:03 +0100 Subject: [PATCH 12/18] upgrade script updated --- content/en/blog/releases/2024.X/2024.9.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index 5cd309935..214dc8d59 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -95,7 +95,7 @@ Finally, the [Documentation][] includes updates related to: | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | | {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | | {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | -| {{% ctx %}} Upgrade Scripts | 1.2.7.24430 | Yes | Patch | N/A | | +| {{% ctx %}} Upgrade Scripts | 1.2.8.24430 | Yes | Patch | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | | {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | | {{% ctx %}} Encryptor | 3.1.0.24330 | No | N/A | N/A | | From 0a12ff709a8c4387c5ec2ab214a914e5d05f0fb5 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Thu, 10 Oct 2024 10:11:57 +0100 Subject: [PATCH 13/18] versions --- content/en/blog/releases/2024.X/2024.9.md | 38 +++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/content/en/blog/releases/2024.X/2024.9.md b/content/en/blog/releases/2024.X/2024.9.md index 214dc8d59..87de9aae1 100644 --- a/content/en/blog/releases/2024.X/2024.9.md +++ b/content/en/blog/releases/2024.X/2024.9.md @@ -75,26 +75,26 @@ Finally, the [Documentation][] includes updates related to: | Release Component | Version | Updated | Update Type | Breaking Change | Notes | |--------------------------------------------------------------------------------|---------------|---------|---------------|-----------------|--------| -| [{{% ctx %}} Innovation Core Application][] | 53.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} API Gateway Service][] | 38.3.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Authorisation Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Concurrency Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Configuration Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Data Storage Service][] | 9.0.13.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Licence Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Listeners Service][] | 2.0.0.24430 | Yes | First Release | N/A | | Waiting for AB -|     > [{{% ctx %}} Package Management Service][] | 11.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Provisioning Service][] | 13.1.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Scheduling Service][] | 7.0.8.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Triggers Service][] | 11.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Innovation Execution Application][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -|     > [{{% ctx %}} Execution Service][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | Waiting for AB -| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | 12.3.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the server-side validation of the APIs are [breaking][Breaking - Server-side validation added to {{% ctx %}} Gateway API] between 2024.7 and 2024.9 | Waiting for AB -| [{{% ctx %}} Blocks Package][Blocks] | 48.2.0.24420 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | Waiting for AB +| [{{% ctx %}} Innovation Core Application][] | 53.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} API Gateway Service][] | 38.3.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Authorisation Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Concurrency Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Configuration Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Data Storage Service][] | 9.0.13.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Execution Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Licence Management Service][] | 7.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Listeners Service][] | 2.0.0.24430 | Yes | First Release | N/A | | +|     > [{{% ctx %}} Package Management Service][] | 11.0.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Provisioning Service][] | 13.1.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Scheduling Service][] | 7.0.8.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Triggers Service][] | 11.0.0.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +| [{{% ctx %}} Innovation Execution Application][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +|     > [{{% ctx %}} Execution Service][] | 24.1.1.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the reduction of the total number of NServiceBus endpoints and RabbitMQ queues are [breaking][Breaking - Reduction of total number of NServiceBus endpoints and RabbitMQ queues] between 2024.7 and 2024.9 if upgraded on its own | +| [{{% ctx %}} Gateway][Gateway], including [{{% ctx %}} Studio][] | 12.3.2.24430 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the server-side validation of the APIs are [breaking][Breaking - Server-side validation added to {{% ctx %}} Gateway API] between 2024.7 and 2024.9 | +| [{{% ctx %}} Blocks Package][Blocks] | 48.2.0.24420 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | No | N/A | N/A | | -| {{% ctx %}} App Server Install Scripts | 5.2.2.24420 | Yes | Minor | N/A | | -| {{% ctx %}} Web App Server Install Scripts | 10.1.1.24420 | Yes | Patch | N/A | | +| {{% ctx %}} App Server Install Scripts | 5.2.3.24430 | Yes | Minor | N/A | | +| {{% ctx %}} Web App Server Install Scripts | 8.1.1.24420 | Yes | Patch | N/A | | | {{% ctx %}} Upgrade Scripts | 1.2.8.24430 | Yes | Patch | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 4.1.0.24360 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | | {{% ctx %}} Encryption Key Generator | 2.0.0.24350 | Yes | Major | Yes | Major changes occurred between releases, these changes are related to the upgrade to .NET 8 and are [breaking][Breaking - Upgrade to .NET 8] between 2024.7 and 2024.9 | From 732a564206963d49ec02478f2a4d3d06634e15be Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Thu, 10 Oct 2024 16:39:14 +0100 Subject: [PATCH 14/18] add listener --- .../architecture/components/multi-server.md | 8 ++++---- .../components/purpose/listeners-service.md | 1 + .../architecture/components/single-server.md | 6 +++--- .../Cortex Innovation Node Details.png | Bin 130838 -> 131068 bytes 4 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 content/en/docs/2024.9/_shared/architecture/components/purpose/listeners-service.md diff --git a/content/en/docs/2024.9/_shared/architecture/components/multi-server.md b/content/en/docs/2024.9/_shared/architecture/components/multi-server.md index a6441cbb5..216927df2 100644 --- a/content/en/docs/2024.9/_shared/architecture/components/multi-server.md +++ b/content/en/docs/2024.9/_shared/architecture/components/multi-server.md @@ -10,10 +10,11 @@ |     > [Data Storage Service][Data Storage Service] | {{< section "/architecture/components/purpose/data-storage-service.md" >}} | - | - | |     > [Execution Management Service][Execution Management Service] | {{< section "/architecture/components/purpose/execution-management-service.md">}} | - | - | |     > [Licence Management Service][Licence Management Service] | {{< section "/architecture/components/purpose/licence-management-service.md" >}} | - | - | +|     > [Listeners Service][Listeners Service] | {{< section "/architecture/components/purpose/listeners-service.md" >}} | - | - | |     > [Package Management Service][Package Management Service] | {{< section "/architecture/components/purpose/package-management-service.md" >}} | - | - | |     > [Provisioning Service][Provisioning Service] | {{< section "/architecture/components/purpose/provisioning-service.md" >}} | - | - | |     > [Scheduling Service][Scheduling Service] | {{< section "/architecture/components/purpose/scheduling-service.md" >}} | - | - | -|     > [Triggers Service][Triggers Service] | {{< section "/architecture/components/purpose/triggers-service.md" >}} | - | - | +|     > [Triggers Service][Triggers Service] | {{< section "/architecture/components/purpose/triggers-service.md" >}} | - | - | | [{{% ctx %}} Innovation Execution Application][Innovation Execution Application] | {{< section "/architecture/components/purpose/cortex-innovation-execution-application.md" >}} | Required | Application Server | |     > [Execution Service][Execution Service] | {{< section "/architecture/components/purpose/execution-service.md" >}} | - | - | | {{% ctx %}} Block Packages | {{< section "/architecture/components/purpose/cortex-block-packages.md" >}} | Required | Web Application Server, Application Server | @@ -36,18 +37,17 @@ [Execution Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ExecutionManagementService.MainDoc" >}} [Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" >}} [Licence Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.LicenceManagementService.MainDoc" >}} +[Listeners Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ListenersService.MainDoc" >}} [Package Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.PackageManagementService.MainDoc" >}} [Provisioning Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ProvisioningService.MainDoc" >}} [Scheduling Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.SchedulingService.MainDoc" >}} [Triggers Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.TriggersService.MainDoc" >}} [Gateway Guide]: {{< url path="Cortex.Guides.Gateway.MainDoc" >}} [Studio Guide]: {{< url path="Cortex.Guides.Studio.MainDoc" >}} -[SQL Server Express]: {{< url path="MSDownload.SqlServerExpress.2016" >}} -[SQL Server Standard]: {{< url path="MSEval.SQLServer.2019" >}} [Microsoft Service Fabric]: {{< url path="MSDocs.ServiceFabric.MainDoc" >}} [Microsoft Service Fabric Explorer]: {{< url path="MSDocs.ServiceFabric.Explorer" >}} [Particular NServiceBus]: {{< url path="Particular.NServiceBus.MainDoc" >}} [Pivotal RabbitMQ]: {{< url path="RabbitMQ.MainDoc" >}} [Erlang OTP]: {{< url path="ErlangOTP.MainDoc" >}} [gobetween]: {{< url path="GoBetween.MainDoc" >}} -[NSSM]: {{< url path="NSSM.MainDoc" >}} \ No newline at end of file +[NSSM]: {{< url path="NSSM.MainDoc" >}} diff --git a/content/en/docs/2024.9/_shared/architecture/components/purpose/listeners-service.md b/content/en/docs/2024.9/_shared/architecture/components/purpose/listeners-service.md new file mode 100644 index 000000000..225dd2dac --- /dev/null +++ b/content/en/docs/2024.9/_shared/architecture/components/purpose/listeners-service.md @@ -0,0 +1 @@ +Application Service that accepts incoming connections that could trigger executions. \ No newline at end of file diff --git a/content/en/docs/2024.9/_shared/architecture/components/single-server.md b/content/en/docs/2024.9/_shared/architecture/components/single-server.md index 8188539ba..3bba0f94d 100644 --- a/content/en/docs/2024.9/_shared/architecture/components/single-server.md +++ b/content/en/docs/2024.9/_shared/architecture/components/single-server.md @@ -10,10 +10,11 @@ |     > [Data Storage Service][Data Storage Service] | {{< section "/architecture/components/purpose/data-storage-service.md" >}} | - | - | |     > [Execution Management Service][Execution Management Service] | {{< section "/architecture/components/purpose/execution-management-service.md">}} | - | - | |     > [Licence Management Service][Licence Management Service] | {{< section "/architecture/components/purpose/licence-management-service.md" >}} | - | - | +|     > [Listeners Service][Listeners Service] | {{< section "/architecture/components/purpose/listeners-service.md" >}} | - | - | |     > [Package Management Service][Package Management Service] | {{< section "/architecture/components/purpose/package-management-service.md" >}} | - | - | |     > [Provisioning Service][Provisioning Service] | {{< section "/architecture/components/purpose/provisioning-service.md" >}} | - | - | |     > [Scheduling Service][Scheduling Service] | {{< section "/architecture/components/purpose/scheduling-service.md" >}} | - | - | -|     > [Triggers Service][Triggers Service] | {{< section "/architecture/components/purpose/triggers-service.md" >}} | - | - | +|     > [Triggers Service][Triggers Service] | {{< section "/architecture/components/purpose/triggers-service.md" >}} | - | - | | [{{% ctx %}} Innovation Execution Application][Innovation Execution Application] | {{< section "/architecture/components/purpose/cortex-innovation-execution-application.md" >}} | Required | Application Server | |     > [Execution Service][Execution Service] | {{< section "/architecture/components/purpose/execution-service.md" >}} | - | - | | {{% ctx %}} Block Packages | {{< section "/architecture/components/purpose/cortex-block-packages.md" >}} | Required | Web Application Server, Application Server | @@ -34,14 +35,13 @@ [Execution Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ExecutionManagementService.MainDoc" >}} [Execution Service]: {{< url path="Cortex.Guides.CortexInnovation.ExecutionApplication.Services.ExecutionService.MainDoc" >}} [Licence Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.LicenceManagementService.MainDoc" >}} +[Listeners Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ListenersService.MainDoc" >}} [Package Management Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.PackageManagementService.MainDoc" >}} [Provisioning Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.ProvisioningService.MainDoc" >}} [Scheduling Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.SchedulingService.MainDoc" >}} [Triggers Service]: {{< url path="Cortex.Guides.CortexInnovation.CoreApplication.Services.TriggersService.MainDoc" >}} [Gateway Guide]: {{< url path="Cortex.Guides.Gateway.MainDoc" >}} [Studio Guide]: {{< url path="Cortex.Guides.Studio.MainDoc" >}} -[SQL Server Express]: {{< url path="MSDownload.SqlServerExpress.2016" >}} -[SQL Server Standard]: {{< url path="MSEval.SQLServer.2019" >}} [Microsoft Service Fabric]: {{< url path="MSDocs.ServiceFabric.MainDoc" >}} [Microsoft Service Fabric Explorer]: {{< url path="MSDocs.ServiceFabric.Explorer" >}} [Particular NServiceBus]: {{< url path="Particular.NServiceBus.MainDoc" >}} diff --git a/content/static/2024.9/images/editable/Cortex Innovation Node Details.png b/content/static/2024.9/images/editable/Cortex Innovation Node Details.png index a73538fc99d0612f87a3047a3d7e5eb685257145..654b1442565115c46f15e3595a974e429203bd54 100644 GIT binary patch literal 131068 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 NLsbV^to-Qte*xaST5$jX literal 130838 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

Hevx@R4V4 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%0DcQiUGS(VXXYL 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 Date: Thu, 10 Oct 2024 16:39:28 +0100 Subject: [PATCH 15/18] improve website --- assets/js/offline-search.js | 11 +-- assets/scss/_content.scss | 122 +++++++++++++++++++++------- assets/scss/_sidebar-tree.scss | 4 +- assets/scss/_variables_project.scss | 16 ++-- assets/scss/main.scss | 29 +++---- 5 files changed, 124 insertions(+), 58 deletions(-) diff --git a/assets/js/offline-search.js b/assets/js/offline-search.js index 6151d9b6e..6f99da65a 100644 --- a/assets/js/offline-search.js +++ b/assets/js/offline-search.js @@ -61,12 +61,14 @@ let docToAdd; if (searchPath !== undefined && doc.ref.startsWith(searchPath)) { docToAdd = doc; - } else if (searchPath === undefined) { docToAdd = doc; } - if (docToAdd) { + if (docToAdd + && docToAdd.ref !== undefined + && !docToAdd.ref.includes('/_shared/') + ) { this.add(doc); resultDetails.set(doc.ref, { @@ -150,11 +152,10 @@ ); const $searchResultBody = $('

').css({ - maxHeight: `calc(100vh - ${ - $targetSearchInput.offset().top - + maxHeight: `calc(100vh - ${$targetSearchInput.offset().top - $(window).scrollTop() + 180 - }px)`, + }px)`, overflowY: 'auto', }); $html.append($searchResultBody); diff --git a/assets/scss/_content.scss b/assets/scss/_content.scss index 7525c57f0..ae05029a6 100644 --- a/assets/scss/_content.scss +++ b/assets/scss/_content.scss @@ -3,9 +3,19 @@ // .td-content { + display: grid; + grid-template-columns: minmax(0, 1fr); + grid-row-gap: 8px; + row-gap: 8px; order: 1; - p, li, td { + .reading-time { + margin: 5px 0px; + } + + p, + li, + td { font-weight: $font-weight-body-text; } @@ -16,29 +26,50 @@ } p { - margin-bottom: 0.2rem; + margin-top: 0px; + margin-bottom: 0px; } - > h1 { + >h1 { font-weight: $font-weight-bold; - margin-bottom: 1rem; } - > h2 { - margin-bottom: 1rem; + >h2 { + margin-top: 10px; + margin-bottom: 10px; + padding-bottom: 8px; + border-bottom: 1px solid rgba(50, 50, 50, 0.1); + } + + >h2:not(:first-of-type) { + margin-top: 24px; + } + + >h2+h3 { + margin-top: 10px; } - > h2:not(:first-child) { - margin-top: 3rem; + >h3 { + margin-top: 24px; + margin-bottom: 8px; } - > h2 + h3 { - margin-top: 1rem; + h3+h4 { + margin-top: 10px; } - > h3, > h4, > h5, > h6 { - margin-bottom: 1rem; - margin-top: 2rem; + >h4 { + margin-top: 14px; + margin-bottom: 4px; + } + + h4+h5, h5+h6 { + margin-top: 5px; + } + + >h5, >h6 { + margin-top: 10px; + margin-bottom: 4px; } img { @@ -53,7 +84,7 @@ max-width: 90%; } - > table { + >table { @extend .table-striped; @extend .table-responsive; @@ -61,30 +92,46 @@ @extend .table; } - > blockquote { + >blockquote { padding: 0 0 0 1rem; margin-bottom: $spacer; color: $gray-600; border-left: 6px solid $secondary; } - > ul li, > ol li { + >ul { + margin-bottom: 0px; + } + + >ul li, + >ol li { margin-bottom: .25rem; - > table { + >table { @extend .table-striped; - + @extend .table-responsive; - + @extend .table; - } + } } strong { font-weight: $font-weight-bold; } - > pre, > .highlight, > .lead, > h1, > h2, > ul, > ol, > p, > blockquote, > dl dd, .footnotes, > .alert { + >pre, + >.highlight, + >.lead, + >h1, + >h2, + >ul, + >ol, + >p, + >blockquote, + >dl dd, + .footnotes, + >.alert { @extend .td-max-width-on-larger-screens; } @@ -93,8 +140,10 @@ margin-bottom: 1 * $spacer; } - .lead { - margin-bottom: 1.5rem; + .lead, .td-byline { + width: 100%; + max-width: 100%; + margin: 5px 0px !important; } span { @@ -103,23 +152,25 @@ color: black; padding: 0.18rem 0.45rem 0.18rem 0.45rem } + &.threshold-warning { - background-color: #FF9830; + background-color: #FF9830; color: black; - padding: 0.18rem 0.45rem 0.18rem 0.45rem + padding: 0.18rem 0.45rem 0.18rem 0.45rem } + &.threshold-critical { background-color: #F2495C; color: black; - padding: 0.18rem 0.45rem 0.18rem 0.45rem + padding: 0.18rem 0.45rem 0.18rem 0.45rem } } - > .footnotes { + >.footnotes { font-style: italic; } - > .youtube-video { + >.youtube-video { max-width: 640px; width: 100%; animation: fadeIn 2s; @@ -130,6 +181,12 @@ border-radius: 5px; } } + + br { + content: " "; + display: block; + margin-bottom: 5px; + } } .td-title { @@ -142,6 +199,11 @@ } @keyframes fadeIn { - 0% { opacity: 0; } - 100% { opacity: 1; } + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } } \ No newline at end of file diff --git a/assets/scss/_sidebar-tree.scss b/assets/scss/_sidebar-tree.scss index b82a981d4..62088a674 100644 --- a/assets/scss/_sidebar-tree.scss +++ b/assets/scss/_sidebar-tree.scss @@ -114,9 +114,9 @@ @include media-breakpoint-up(md) { @supports (position: sticky) { position: sticky; - top: 4rem; + top: 5.5rem; z-index: 10; - height: calc(100vh - 6rem); + height: calc(100vh - 5.5rem); } } diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index 32108bc97..9c5947255 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -33,8 +33,13 @@ body { text-align: left; background-color: $white; + h1:first-of-type { + font-weight: 700 !important; + } + h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { color: $ctx-blue; + font-weight: 600 !important; } .slogan { @@ -155,31 +160,28 @@ body { h2 { font-size: $h2-font-size !important; - font-weight: 600 !important; - margin: 2rem 0rem 0.5rem 0rem !important; max-width: 100% !important; } h3 { font-size: $h3-font-size !important; - font-weight: 600 !important; - margin: 1rem 0rem 0rem 0rem !important; - padding-bottom: 0.5rem; + opacity: .95; } h4 { font-size: $h4-font-size !important; - font-weight: 400 !important; - margin: 1rem 0rem 0.5rem 0rem !important; + opacity: .90; } h5 { font-size: $h5-font-size !important; + opacity: .85; } h6 { font-size: $h6-font-size !important; + opacity: .80; } p.namespace { diff --git a/assets/scss/main.scss b/assets/scss/main.scss index 3faf20607..acc345f3d 100644 --- a/assets/scss/main.scss +++ b/assets/scss/main.scss @@ -33,24 +33,25 @@ // Adjust anchors vs the fixed menu. @include media-breakpoint-up(md) { - .td-offset-anchor:target { - display: block; - position: relative; - top: -4rem; - visibility: hidden; - } - h1[id]:before, - h2[id]:before, - h3[id]:before, - h4[id]:before, - h5[id]:before { + h1[id]:target, + h2[id]:target, + h3[id]:target, + h4[id]:target, + h5[id]:target { content: " "; - margin-top: -6rem; - height: 6rem; - visibility: hidden; + margin-top: -100px; + padding-top: 100px; } } + +.td-cover-block { + background-attachment: fixed; + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + @import "rtl/main"; @import "styles_project"; \ No newline at end of file From 77b29b15a26c2a7586c7cb49325a9f3655999083 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Mon, 14 Oct 2024 09:08:52 +0100 Subject: [PATCH 16/18] resolved todos --- content/en/blog/releases/2024.X/2024.7.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/blog/releases/2024.X/2024.7.md b/content/en/blog/releases/2024.X/2024.7.md index 335377c6e..08ee71d65 100644 --- a/content/en/blog/releases/2024.X/2024.7.md +++ b/content/en/blog/releases/2024.X/2024.7.md @@ -80,7 +80,7 @@ Finally, the [Product Portal][] includes updates related to: | [{{% ctx %}} Interaction Portal][Interaction Portal] | 2.0.0.24340 | Yes | Major | Yes | The Interaction Portal flows will need to be [upgraded][upgrade flows steps] | | {{% ctx %}} App Server Install Scripts | 5.1.1.24340 | Yes | Patch | No | | | {{% ctx %}} Web App Server Install Scripts | 8.0.0.24330 | Yes | Major | No | Major changes occurred between internal development releases, however, these changes are not breaking between 2024.5 and 2024.7 | -| {{% ctx %}} Upgrade Scripts | 1.2.0.24210 | TODO | TODO | N/A | | +| {{% ctx %}} Upgrade Scripts | 1.2.0.24210 | Yes | Minor | N/A | | | {{% ctx %}} Licence Fingerprint Generator | 3.1.1.24250 | No | N/A | N/A | | | {{% ctx %}} Encryption Key Generator | 1.2.0.23470 | No | N/A | N/A | | | {{% ctx %}} Encryptor | 3.1.0.24330 | Yes | Minor | N/A | | From f366f2e79abe43301efdca22540a564483661fa8 Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Mon, 14 Oct 2024 11:02:21 +0100 Subject: [PATCH 17/18] improve explanation regarding activity and process --- .../Concepts/fundamentals/flows/what-is-a-flow.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md index 8f09aece4..e56d20651 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/flows/what-is-a-flow.md @@ -18,6 +18,11 @@ There are two types of flows, which are used for different purposes: * [Process][] * [Activity][] +{{% alert title="Note" %}} +Prior to version 2024.9, there was a single type of flow named `Flow`. +As of 2024.9, `Flow` has been renamed to `Activity`. +{{% /alert %}} + ### Process Processes are a type of [Flow][] that can contain multiple [Activities][Activity] and are used to model high-level business processes. @@ -28,10 +33,11 @@ Processes are a type of [Flow][] that can contain multiple [Activities][Activity * Processes can call other processes * Processes can call activities * Processes only contain a subset of blocks as they are intended to model high-level business processes, not low-level implementation of tasks or actions +* Processes are optional an automation solution, but are useful for organizing and structuring the logic of a solution ### Activity -Activities are a type of [Flow][] that can be used to model low-level tasks or actions. +Activities are a type of [Flow][] that are used to model low-level tasks or actions. {{< figure src="/images/top-level-workspace-activity.svg" title="Example Activity" >}} @@ -39,6 +45,7 @@ Activities are a type of [Flow][] that can be used to model low-level tasks or a * Activities can call other activities * Activities cannot call processes * Activities contain all blocks as they are intended to model low-level tasks or actions +* Activities are required in an automation solution, as they are the building blocks of the solution ## Composition of a Flow From 620d6f2a57d12ab285ede65828391c72e55d421f Mon Sep 17 00:00:00 2001 From: cortex-lp Date: Mon, 14 Oct 2024 11:38:22 +0100 Subject: [PATCH 18/18] Final PO Review --- assets/scss/main.scss | 4 +- .../property-editors/expression-editor.md | 45 +++++++++---------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/assets/scss/main.scss b/assets/scss/main.scss index acc345f3d..7103f8837 100644 --- a/assets/scss/main.scss +++ b/assets/scss/main.scss @@ -40,8 +40,8 @@ h4[id]:target, h5[id]:target { content: " "; - margin-top: -100px; - padding-top: 100px; + margin-top: -90px; + padding-top: 90px; } } diff --git a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md index d0f6c0b69..a1add4898 100644 --- a/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md +++ b/content/en/docs/2024.9/Reference/Concepts/fundamentals/blocks/block-properties/property-editors/expression-editor.md @@ -264,7 +264,7 @@ Types of expressions: - [Enums][Enum expressions] - [Casting][Casting expressions] - [Indexes][Index expressions] -- [Decomposition][Decomposition expressions] ([output property][] only) +- [Decomposition][Decomposition expressions] ([output property][Output Properties] only) ### Arithmetic expressions @@ -561,18 +561,13 @@ In the examples below assume: {{< figure src="/images/set-variable/set-variable-expression-decomposition.PNG" >}} -Decomposition expressions are used to extract the properties of an [Output property][Output properties] and store them in [variables][Variables Concept]. +Decomposition expressions are used to save selected values from an [Output property][Output properties] to multiple [variables][Variables Concept]. {{% alert title="Note" %}} This is currently only supported by output properties. {{% /alert %}} -[Output properties][] can be decomposed using the decomposition syntax which includes the following syntaxes: - -- [Property expression][Property expressions] -- [Index expression][Index expressions] - -The decomposition syntax follows a very similar pattern to a `JSON` object: +Decomposition syntax follows a similar pattern to a `JSON` object: - each `key` is the property path expression, where `$` is the root of the output value. - each `value` is the variable name, prefixed with `($)`. @@ -584,13 +579,13 @@ The decomposition syntax follows a very similar pattern to a `JSON` object: } ``` -The examples below assumes that the output value contains the following JSON object: +The examples below assumes that the output value contains the following data: ``` json { "company": { "name": "Company Name", - "department": [ + "departments": [ { "name": "HR", "employees": [ @@ -622,17 +617,17 @@ The examples below assumes that the output value contains the following JSON obj } ``` -### Decomposing an object property +#### Decomposing an object property -To decompose this structure and store the departments, the syntax would be: +To save the `departments` property, the syntax would be: ```json { - "$.company.department": ($)ListOfDepartment + "$.company.departments": ($)ListOfDepartments } ``` -In this example, the variable `($)ListOfDepartment` will be set to the following value: +In this example, the variable `($)ListOfDepartments` will be set to the following value: ```json [ @@ -665,13 +660,13 @@ In this example, the variable `($)ListOfDepartment` will be set to the following ] ``` -### Decomposing a list item +#### Decomposing an item in a list -To decompose this structure and store the first `department`, the syntax would be: +To save the first department, the syntax would be: ```json { - "$.company.department[0]": ($)FirstDepartment + "$.company.departments[0]": ($)FirstDepartment } ``` @@ -693,13 +688,13 @@ In this example, the variable `($)FirstDepartment` will be set to the following } ``` -### Decomposing the last list item +#### Decomposing the last item in a list -To decompose this structure and store the last `employee` of the first `department`, the syntax would be: +To save the last `employee` of the first department, the syntax would be: ```json { - "$.company.department[0].employees[-1]": ($)LastEmployeeOfFirstDepartment + "$.company.departments[0].employees[-1]": ($)LastEmployeeOfFirstDepartment } ``` @@ -712,14 +707,14 @@ In this example, the variable `($)LastEmployeeOfFirstDepartment` will be set to } ``` -### Decomposing multiple properties at the same time +#### Decomposing multiple properties at the same time -To decompose this structure and store the `id` and `name` of the first `employee` of the first `department`, the syntax would be: +To save the `id` and `name` of the first `employee` of the first department, the syntax would be: ```json { - "$.company.department[0].employees[0].id": ($)FirstEmployeeId, - "$.company.department[0].employees[0].name": ($)FirstEmployeeName + "$.company.departments[0].employees[0].id": ($)FirstEmployeeId, + "$.company.departments[0].employees[0].name": ($)FirstEmployeeName } ``` @@ -839,7 +834,7 @@ This may change in future to allow developers to specifically select which of th [Enum expressions]: {{< ref "#enum-expressions" >}} [Casting expressions]: {{< ref "#casting-expressions" >}} [Index expressions]: {{< ref "#index-expressions" >}} -[Decomposition expressions]: {{< ref "#output-property-decomposition-expressions" >}} +[Decomposition expressions]: {{< ref "#decomposition-expressions" >}} [Data Type]: {{< url path="Cortex.Reference.Concepts.Fundamentals.DataTypes.MainDoc" >}}