Search Results for

    Show / Hide Table of Contents

    What's new in Intent Architect (October 2023)

    Welcome to the October 2023 edition of highlights of What's New in Intent Architect.

    • Highlights

      • Intent Architect 4.1 (Beta) - Intent Architect 4.1 is now available as a Beta version, with many new product features.
      • Binary Output Template support - Intent Architect now supports creating templates which produce binary files, as opposed to text based files.
      • Azure Table Storage support - Azure Table Storage is now available as a persistence option for Domain Modeling.
      • Support for NuGet Central Package Management (CPM) - Centralize .csproj NuGet package versions using a Directory.Packages.props file.
    • More updates

      • Specify OpenAPI operationId values for endpoints - Control the OpenAPI operationId which is generated into service definitions.
      • OpenAPI specifications now have non-nullable fields marked as required - In the Swagger UI, non-nullable fields on contracts will now show as required.
      • Domain Event refinements - Domain eventing implementation can be aligned with domain event modeling.
      • CRUD Command/Query consumption convenience - When Controller parameters match with Command/Query fields, we've made consuming these endpoints easier.
      • CRUD scripting improvements around "required"/"non-nullable" aggregational association foreign keys - In the Services Designer, Map to Domain Data now automatically adds aggregational association foreign keys for RDBMS domain packages.
      • Combine query/command files and their respective handlers and validators - Optionally have query/command files along with their respective handlers and validators all combined into a single file.

    Update details

    Intent Architect 4.1 (Beta)

    This release of Intent Architect is fully backward compatible with V4.0.x. It does simultaneously come with functionality that is not available in V4.0.x that, if used, would require other team members working on that application to upgrade to V4.1.x or higher.

    The main new features are as follows:

    • Service Designer Diagrams
    • Advanced Mapping System
    • Enhanced Diagram Capabilities
    • Error Management Enhancements

    Sample Service Designer diagram

    For more detail, refer to the product release notes and watch our webinar covering the 4.1 changes.

    Available from:

    • Intent Architect 4.1.*

    Binary Output Template support

    If is now possible to create templates which output Binary files as opposed to only supporting text-based files. From within the Module Builder the following Templates support binary output options:

    • File Template
    • Static Content Template

    File Template Configuration

    File Template Example

    Static Content Template Configuration

    Static Content Template Example

    For more detail, refer to the module documentation.

    Available from:

    • Intent Architect 4.1.*
    • Intent.ModuleBuilder 3.7.0-beta.1

    Azure Table Storage support

    This module brings in a new Document Database Provider, Azure.TableStorage, allowing you realize your DocumentDB paradigm Domain Models with an Azure Table Storage persistence layer. This module includes

    • Modeler customizations.
    • Table Storage repositories.
    • Table Storage unit of work.
    • Improve support for compositional key support in CRUD scripting.

    Table Storage Modeling Example

    For more detail, refer to the module documentation.

    Available from:

    • Intent Architect 4.1.*
    • Intent.Azure.TableStorage 1.0.0-beta.*

    Support for NuGet Central Package Management (CPM)

    In .NET, Central Package Management (CPM) allows management of versions of NuGet packages for multiple .csproj from a central Directory.Packages.props file and an MSBuild property.

    You can now specify you wish to use CPM for your Solution and Intent will then manage your NuGet package versions accordingly:

    Solution CPM

    For more information refer to the module's README.

    Available from:

    • Intent.VisualStudio.Projects 3.4.0

    Specify OpenAPI operationId values for endpoints

    The OpenAPI Settings stereotype

    A new OpenAPI Settings stereotype can be applied to endpoints (Commands, Queries, Operations and Azure Functions) to control its operationId, see here for more information.

    Available from:

    • Intent.Metadata.WebApi 4.3.1
    • Intent.AspNetCore.Controllers 5.4.2
    • Intent.AzureFunctions.OpenApi 1.0.3

    OpenAPI specifications now have non-nullable fields marked as required

    Swashbuckle has now been configured to automatically mark fields for non-nullable properties as required in the generated swagger.json file.

    Available from:

    • Intent.AspNetCore.Swashbuckle 4.0.9

    Domain Event refinements

    Previously domain eventing infrastructure was added to all Aggregate roots with-in your domain model, we have now added a new application setting "Domain Settings -> Implement Domain Eventing on", which has the following option:

    • All Aggregates, this option is the original behaviour and is the default option for backwards compatibility.
    • Aggregates with modelled Domain Events, only Aggregate roots with Domain Event publishing modelled against them, with get the Domain Eventing related code.

    Available from:

    • Intent.DomainEvents 4.1.2

    CRUD Command/Query consumption convenience

    When API Controller parameters match with Command/Query fields, we've made consuming these endpoints easier. Now, you don't need to populate the fields on the Command/Query objects that are already populated via a Route parameter.

    Previously you had to specify the Id for an Update Command via the Route parameter and the Command itself. Now if you have a parameter being specified elsewhere (e.g. Url Route), it will prefer that as the source.

    [HttpPut("api/person/{id}")]
    public async Task<ActionResult> UpdatePerson(
        [FromRoute] Guid id,
        [FromBody] UpdatePersonCommand command,
        CancellationToken cancellationToken = default)
    {
        if (command.Id == default)
        {
            command.Id = id;
        }
        if (id != command.Id)
        {
            return BadRequest();
        }
    
        await _mediator.Send(command, cancellationToken);
        return NoContent();
    }
    
    Note

    Note that specifying the Id property in the Command will still be accepted so a check is performed to see whether it is the same as the Route Parameter value.

    Available from:

    • Intent.AspNetCore.Controllers 5.4.1
    • Intent.Application.MediatR 4.1.4
    • Intent.AspNetCore.Controllers.Dispatch.MediatR 5.4.0

    CRUD scripting improvements around "required"/"non-nullable" aggregational association foreign keys

    In the Services Designer, Map to Domain Data now automatically adds aggregational association foreign keys in the RDBMS paradigm.

    Model Example

    Looking at the above model, performing Map to Domain Data on the CreateInvoiceCommand and selecting to include LineItem will now include ProductId as part of the CreateInvoiceItemDto.

    Available from:

    • Intent.Application.MediatR.CRUD 5.3.1

    Optionally have query/command files along with their respective handlers and validators all combined into a single file

    Introduced new "Consolidate Command/Query associated files into single file" setting. When enabled, commands/queries are no longer generated into sub-folders and their respective handlers and validators (as applicable) are now embedded within them as opposed to being generated separately. See the README for more details.

    Available from:

    • Intent.Application.MediatR 4.1.4
    • Edit this page
    ☀
    ☾
    In this article
    Back to top Copyright © 2017-, Intent Software Pte Ltd.