BR.Workflow.Contracts 1.0.20

There is a newer version of this package available.
See the version list below for details.
dotnet add package BR.Workflow.Contracts --version 1.0.20
                    
NuGet\Install-Package BR.Workflow.Contracts -Version 1.0.20
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BR.Workflow.Contracts" Version="1.0.20" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BR.Workflow.Contracts" Version="1.0.20" />
                    
Directory.Packages.props
<PackageReference Include="BR.Workflow.Contracts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BR.Workflow.Contracts --version 1.0.20
                    
#r "nuget: BR.Workflow.Contracts, 1.0.20"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BR.Workflow.Contracts@1.0.20
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BR.Workflow.Contracts&version=1.0.20
                    
Install as a Cake Addin
#tool nuget:?package=BR.Workflow.Contracts&version=1.0.20
                    
Install as a Cake Tool

BR.Workflow.Contracts

NuGet .NET License Build Status

A comprehensive .NET 8 library containing Temporal workflow and activity contracts for distributed workflow processing systems. Built with Clean Architecture principles and clear separation of concerns across service domains.

๐ŸŽฏ What This Package Provides

BR.Workflow.Contracts is the foundation for building distributed, scalable workflow systems using Temporal.io and .NET 8. It provides:

  • ๐Ÿ—๏ธ Workflow Contracts - Define workflow orchestration patterns
  • โšก Activity Contracts - Define individual processing steps
  • ๐Ÿ“Š Data Models - Immutable, validated data contracts
  • ๐Ÿ”ง Utility Extensions - Helper methods for common operations
  • ๐ŸŽจ Clean Architecture - Well-organized, maintainable code structure

๐Ÿ—๏ธ Architecture Overview

This package implements Clean Architecture with clear separation by service domains:

Service Domains

Domain Purpose Key Responsibilities
REI (Real Estate Ingestor) Event validation and blob operations Event validation, blob downloads, status updates
REP (Real Estate Processor) Order processing and business logic Order management, schema validation, client communication
PT (Payload Transformer) Data transformation for external services Data mapping, format conversion, schema validation

Architecture Principles

  • โœ… Separation of Concerns - Clear boundaries between domains
  • โœ… Dependency Inversion - Interfaces depend on abstractions
  • โœ… Single Responsibility - Each contract has one purpose
  • โœ… Open/Closed - Extensible without modification
  • โœ… Interface Segregation - Clients only depend on what they use

โœจ Key Features

Core Features

  • ๐Ÿš€ .NET 8 Compatible - Latest language features and performance improvements
  • ๐Ÿ”’ Nullable Reference Types - Full nullable annotations for better code safety
  • ๐Ÿ“ Data Annotations - Comprehensive validation attributes
  • ๐Ÿ“š XML Documentation - Complete API documentation
  • ๐Ÿงต Immutable Records - Thread-safe, immutable data contracts
  • ๐Ÿ”ง Extension Methods - Utility extensions for common operations

Temporal Integration

  • โฐ Native Temporal Support - Built for Temporal.io workflows
  • ๐Ÿ”„ Workflow Orchestration - Define complex workflow patterns
  • โšก Activity Contracts - Define individual processing steps
  • ๐ŸŽฏ Task Queue Management - Organized by service domain

Production Ready

  • ๐Ÿงช Comprehensive Testing - Full test coverage
  • ๐Ÿ“Š Performance Optimized - Minimal allocations and async patterns
  • ๐Ÿ”’ Security Focused - Input validation and secure defaults
  • ๐Ÿ“ˆ Monitoring Ready - Built-in audit and error tracking

๐Ÿ“ฆ Installation

NuGet Package

dotnet add package BR.Workflow.Contracts

Package Manager Console

Install-Package BR.Workflow.Contracts

Direct Reference

<PackageReference Include="BR.Workflow.Contracts" Version="1.0.17" />

๐Ÿ›๏ธ Project Structure

BR.Workflow.Contracts/
โ”œโ”€โ”€ ๐Ÿ“ Workflows/                    # Workflow orchestration contracts
โ”‚   โ”œโ”€โ”€ IStartRealEstateWorkflow.cs  # Main workflow interface
โ”‚   โ””โ”€โ”€ Models/
โ”‚       โ””โ”€โ”€ RealEstateWorkflowOutput.cs
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Activities/                   # Activity contracts by service domain
โ”‚   โ”œโ”€โ”€ ๐Ÿ  REI/                     # Real Estate Ingestor (3 activities)
โ”‚   โ”‚   โ”œโ”€โ”€ IValidateEventActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IDownloadBlobActivity.cs
โ”‚   โ”‚   โ””โ”€โ”€ IUpdateOrderStatusInBlobActivity.cs
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ โš™๏ธ REP/                     # Real Estate Processor (9 activities)
โ”‚   โ”‚   โ”œโ”€โ”€ IValidateSchemaTemplateActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IDetermineActionTypeActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ ICreateOrderActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IUpdateOrderActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IApproveOrderActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IRejectOrderActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ INotifyClientActivity.cs
โ”‚   โ”‚   โ”œโ”€โ”€ IUpdateDbActivity.cs
โ”‚   โ”‚   โ””โ”€โ”€ ICallApiGatewayActivity.cs
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ ๐Ÿ”„ PT/                      # Payload Transformer (1 activity)
โ”‚       โ””โ”€โ”€ ITransformPayloadActivity.cs
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Models/                       # Data models organized by domain
โ”‚   โ”œโ”€โ”€ ๐ŸŒ Common/                   # Shared models across all services
โ”‚   โ”‚   โ”œโ”€โ”€ AuditInfo.cs            # Workflow execution audit
โ”‚   โ”‚   โ”œโ”€โ”€ ErrorInfo.cs            # Error details and tracking
โ”‚   โ”‚   โ”œโ”€โ”€ ValidationError.cs      # Validation failure details
โ”‚   โ”‚   โ”œโ”€โ”€ ValidationResult.cs     # Validation operation results
โ”‚   โ”‚   โ”œโ”€โ”€ StatusUpdate.cs         # Status change notifications
โ”‚   โ”‚   โ”œโ”€โ”€ ApiGatewayResponse.cs   # External API responses
โ”‚   โ”‚   โ”œโ”€โ”€ BlobMetadata.cs         # Blob storage metadata
โ”‚   โ”‚   โ”œโ”€โ”€ DownloadInfo.cs         # Download operation details
โ”‚   โ”‚   โ””โ”€โ”€ DuplicateCheck.cs       # Duplicate detection results
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ ๐Ÿ“จ Kafka/                   # Kafka payload and workflow input
โ”‚   โ”‚   โ”œโ”€โ”€ RealEstateWorkflowInput.cs  # Main workflow input
โ”‚   โ”‚   โ”œโ”€โ”€ EventInfo.cs            # Event metadata and correlation
โ”‚   โ”‚   โ”œโ”€โ”€ ClientInfo.cs           # Client identification
โ”‚   โ”‚   โ”œโ”€โ”€ BlobInfo.cs             # Blob storage information
โ”‚   โ”‚   โ”œโ”€โ”€ DeadLetterEvent.cs      # DLQ event handling
โ”‚   โ”‚   โ””โ”€โ”€ DlqDetails.cs           # DLQ failure details
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ ๐Ÿ  REI/                     # Real Estate Ingestor models
โ”‚   โ”‚   โ”œโ”€โ”€ ValidateEventInput.cs   # Event validation input
โ”‚   โ”‚   โ”œโ”€โ”€ ValidateEventOutput.cs  # Event validation results
โ”‚   โ”‚   โ”œโ”€โ”€ DownloadBlobInput.cs    # Blob download parameters
โ”‚   โ”‚   โ”œโ”€โ”€ DownloadBlobOutput.cs   # Blob download results
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateOrderStatusInput.cs   # Status update input
โ”‚   โ”‚   โ””โ”€โ”€ UpdateOrderStatusOutput.cs  # Status update results
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ โš™๏ธ REP/                     # Real Estate Processor models
โ”‚   โ”‚   โ”œโ”€โ”€ ValidateSchemaInput.cs  # Schema validation input
โ”‚   โ”‚   โ”œโ”€โ”€ ValidateSchemaOutput.cs # Schema validation results
โ”‚   โ”‚   โ”œโ”€โ”€ DetermineActionInput.cs # Action determination input
โ”‚   โ”‚   โ”œโ”€โ”€ DetermineActionOutput.cs # Action determination results
โ”‚   โ”‚   โ”œโ”€โ”€ CreateOrderInput.cs     # Order creation input
โ”‚   โ”‚   โ”œโ”€โ”€ CreateOrderOutput.cs    # Order creation results
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateOrderInput.cs     # Order update input
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateOrderOutput.cs    # Order update results
โ”‚   โ”‚   โ”œโ”€โ”€ ApproveOrderInput.cs    # Order approval input
โ”‚   โ”‚   โ”œโ”€โ”€ ApproveOrderOutput.cs   # Order approval results
โ”‚   โ”‚   โ”œโ”€โ”€ RejectOrderInput.cs     # Order rejection input
โ”‚   โ”‚   โ”œโ”€โ”€ RejectOrderOutput.cs    # Order rejection results
โ”‚   โ”‚   โ”œโ”€โ”€ NotifyClientInput.cs    # Client notification input
โ”‚   โ”‚   โ”œโ”€โ”€ NotifyClientOutput.cs   # Client notification results
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateDbInput.cs        # Database update input
โ”‚   โ”‚   โ”œโ”€โ”€ UpdateDbOutput.cs       # Database update results
โ”‚   โ”‚   โ”œโ”€โ”€ CallApiGatewayInput.cs  # API Gateway call input
โ”‚   โ”‚   โ””โ”€โ”€ CallApiGatewayOutput.cs # API Gateway call results
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ ๐Ÿ”„ PT/                      # Payload Transformer models
โ”‚       โ”œโ”€โ”€ TransformPayloadInput.cs # Transformation input
โ”‚       โ”œโ”€โ”€ TransformPayloadOutput.cs # Transformation results
โ”‚       โ””โ”€โ”€ TransformationRules.cs   # Transformation configuration
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Enums/                       # Type-safe enumerations
โ”‚   โ”œโ”€โ”€ ActionType.cs               # Order processing actions
โ”‚   โ”œโ”€โ”€ BrightRiverStatus.cs        # Bright River specific statuses
โ”‚   โ”œโ”€โ”€ DeliveryStatus.cs           # Delivery operation statuses
โ”‚   โ”œโ”€โ”€ HttpMethod.cs               # HTTP method constants
โ”‚   โ”œโ”€โ”€ NotificationType.cs         # Notification type definitions
โ”‚   โ”œโ”€โ”€ OrderStatus.cs              # Order lifecycle statuses
โ”‚   โ””โ”€โ”€ ValidationSeverity.cs       # Validation error severity levels
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Extensions/                  # Utility extension methods
โ”‚   โ”œโ”€โ”€ TemporalExtensions.cs       # Workflow result helpers
โ”‚   โ”œโ”€โ”€ ContractExtensions.cs       # Contract utility methods
โ”‚   โ””โ”€โ”€ ValidationExtensions.cs     # Validation helper methods
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Constants/                   # Configuration constants
โ”‚   โ”œโ”€โ”€ ActivityNames.cs            # Activity naming constants
โ”‚   โ”œโ”€โ”€ ConfigurationKeys.cs        # Configuration key constants
โ”‚   โ”œโ”€โ”€ TaskQueues.cs               # Task queue names
โ”‚   โ”œโ”€โ”€ WorkflowNames.cs            # Workflow naming constants
โ”‚   โ””โ”€โ”€ WorkflowTypes.cs            # Workflow type definitions
โ”‚
โ””โ”€โ”€ ๐Ÿ“ Scripts/                     # Build and deployment automation
    โ”œโ”€โ”€ build-and-publish.ps1       # PowerShell build & publish script
    โ”œโ”€โ”€ build-and-publish.cmd       # Windows batch build & publish script
    โ”œโ”€โ”€ build.ps1                   # Comprehensive build script
    โ”œโ”€โ”€ build.cmd                   # Windows build script
    โ””โ”€โ”€ publish.ps1                 # NuGet publishing script

๐Ÿš€ Quick Start Guide

1. Basic Workflow Implementation

using BR.Workflow.Contracts.Workflows;
using BR.Workflow.Contracts.Models.Kafka;
using BR.Workflow.Contracts.Workflows.Models;

public class StartRealEstateWorkflow : IStartRealEstateWorkflow
{
    public async Task<RealEstateWorkflowOutput> ExecuteAsync(RealEstateWorkflowInput input)
    {
        try
        {
            // Your workflow logic here
            return new RealEstateWorkflowOutput
            {
                WorkflowId = Guid.NewGuid(),
                Status = "Completed",
                ClientId = input.ClientInfo.Id,
                OrderId = Guid.NewGuid(),
                ActionType = ActionType.Create,
                ApiGatewayResponse = new ApiGatewayResponse
                {
                    Success = true,
                    StatusCode = 200,
                    Message = "Order created successfully"
                },
                AuditInfo = new AuditInfo
                {
                    CompletedAt = DateTime.UtcNow,
                    ErrorInfo = Array.Empty<ErrorInfo>()
                }
            };
        }
        catch (Exception ex)
        {
            return new RealEstateWorkflowOutput
            {
                WorkflowId = Guid.NewGuid(),
                Status = "Failed",
                ClientId = input.ClientInfo.Id,
                OrderId = Guid.Empty,
                ActionType = ActionType.Create,
                ApiGatewayResponse = new ApiGatewayResponse
                {
                    Success = false,
                    StatusCode = 500,
                    Message = ex.Message
                },
                AuditInfo = new AuditInfo
                {
                    CompletedAt = DateTime.UtcNow,
                    ErrorInfo = new[] { new ErrorInfo { Message = ex.Message, Severity = ValidationSeverity.Error } }
                }
            };
        }
    }
}

2. Activity Implementation

using BR.Workflow.Contracts.Activities.REI;
using BR.Workflow.Contracts.Models.REI;
using BR.Workflow.Contracts.Models.Common;

public class ValidateEventActivity : IValidateEventActivity
{
    public async Task<ValidateEventOutput> ValidateAsync(ValidateEventInput input)
    {
        var validationErrors = new List<ValidationError>();

        // Validate correlation ID
        if (string.IsNullOrEmpty(input.CorrelationId))
        {
            validationErrors.Add(new ValidationError
            {
                Field = nameof(input.CorrelationId),
                Message = "Correlation ID is required",
                Severity = ValidationSeverity.Error
            });
        }

        // Validate client ID
        if (input.ClientId == Guid.Empty)
        {
            validationErrors.Add(new ValidationError
            {
                Field = nameof(input.ClientId),
                Message = "Valid Client ID is required",
                Severity = ValidationSeverity.Error
            });
        }

        // Check for duplicates
        var duplicateCheck = await CheckForDuplicatesAsync(input.CorrelationId, input.ClientId);

        return new ValidateEventOutput
        {
            CanProceed = validationErrors.Count == 0,
            DuplicateCheck = duplicateCheck,
            ValidationErrors = validationErrors.ToArray()
        };
    }

    private async Task<DuplicateCheck> CheckForDuplicatesAsync(string correlationId, Guid clientId)
    {
        // Your duplicate checking logic here
        return new DuplicateCheck
        {
            RecentlyDownloaded = false,
            DownloadCount = 0
        };
    }
}

3. Using Extension Methods

using BR.Workflow.Contracts.Extensions;

// Create workflow results easily
var successResult = TemporalExtensions.CreateSuccessResult(
    workflowId: Guid.NewGuid(),
    status: "Completed",
    clientId: clientId,
    orderId: orderId,
    actionType: ActionType.Create
);

// Validate contract inputs
if (!input.IsValid())
{
    var errors = input.GetValidationErrors();
    foreach (var error in errors)
    {
        Console.WriteLine($"Validation Error: {error.Field} - {error.Message}");
    }
}

// Create error results
var errorResult = TemporalExtensions.CreateErrorResult(
    workflowId: Guid.NewGuid(),
    status: "Failed",
    clientId: clientId,
    orderId: orderId,
    actionType: ActionType.Create,
    errorMessage: "Processing failed"
);

๐Ÿ”ง Service Domain Deep Dive

๐Ÿ  REI (Real Estate Ingestor)

Purpose: Handle incoming events and manage blob storage operations

Key Activities:

  • IValidateEventActivity - Validate incoming events and check for duplicates
  • IDownloadBlobActivity - Download blob content from Azure Storage
  • IUpdateOrderStatusInBlobActivity - Update order status in blob storage

Use Cases:

  • Event deduplication and validation
  • Blob content retrieval for processing
  • Status tracking in blob storage

โš™๏ธ REP (Real Estate Processor)

Purpose: Core business logic for order processing and client communication

Key Activities:

  • IValidateSchemaTemplateActivity - Validate data against business schemas
  • IDetermineActionTypeActivity - Determine processing action type
  • ICreateOrderActivity - Create new orders
  • IUpdateOrderActivity - Update existing orders
  • IApproveOrderActivity - Approve orders
  • IRejectOrderActivity - Reject orders
  • INotifyClientActivity - Notify clients of status changes
  • IUpdateDbActivity - Update processing status in database
  • ICallApiGatewayActivity - Communicate with external services

Use Cases:

  • Order lifecycle management
  • Business rule validation
  • Client communication
  • External service integration

๐Ÿ”„ PT (Property Transformer)

Purpose: Transform data between different service formats

Key Activities:

  • ITransformPayloadActivity - Transform data between formats

Use Cases:

  • Data format conversion
  • Schema mapping
  • External service compatibility

๐Ÿ“จ Kafka Integration

The library provides dual-purpose models that serve both Kafka messaging and workflow processing:

Kafka Payload Models

Model Purpose Key Properties
RealEstateWorkflowInput Main workflow input from Kafka EventInfo, ClientInfo, BlobInfo
EventInfo Event metadata and correlation Name, CorrelationId, Timestamp
ClientInfo Client identification Id, Name, Reference
BlobInfo Azure Blob Storage information Url, Container, BlobName

Key Features

  • JSON Serialization - JsonPropertyName attributes for camelCase JSON
  • Kafka Compatibility - Optimized for message serialization/deserialization
  • Workflow Integration - Seamless integration with Temporal workflows
  • Type Safety - Full nullable reference type support
  • Validation - Comprehensive data validation attributes

Usage Pattern

// Kafka message processing
var kafkaPayload = JsonSerializer.Deserialize<RealEstateWorkflowInput>(kafkaMessage);

// Validate the payload
if (!kafkaPayload.IsValid())
{
    var errors = kafkaPayload.GetValidationErrors();
    // Handle validation errors...
}

// Workflow execution
var result = await workflow.ExecuteAsync(kafkaPayload);

๐Ÿ“‹ Complete Contract Reference

Workflows

Interface Purpose Output
IStartRealEstateWorkflow Main workflow orchestration RealEstateWorkflowOutput

Activities (13 Total)

REI Activities (3)
Activity Purpose Input Output
IValidateEventActivity Validate incoming events ValidateEventInput ValidateEventOutput
IDownloadBlobActivity Download blob content DownloadBlobInput DownloadBlobOutput
IUpdateOrderStatusInBlobActivity Update blob status UpdateOrderStatusInput UpdateOrderStatusOutput
REP Activities (9)
Activity Purpose Input Output
IValidateSchemaTemplateActivity Validate business schemas ValidateSchemaInput ValidateSchemaOutput
IDetermineActionTypeActivity Determine processing action DetermineActionInput DetermineActionOutput
ICreateOrderActivity Create new orders CreateOrderInput CreateOrderOutput
IUpdateOrderActivity Update existing orders UpdateOrderInput UpdateOrderOutput
IApproveOrderActivity Approve orders ApproveOrderInput ApproveOrderOutput
IRejectOrderActivity Reject orders RejectOrderInput RejectOrderOutput
INotifyClientActivity Notify clients NotifyClientInput NotifyClientOutput
IUpdateDbActivity Update database UpdateDbInput UpdateDbOutput
ICallApiGatewayActivity Call external APIs CallApiGatewayInput CallApiGatewayOutput
PT Activities (1)
Activity Purpose Input Output
ITransformPayloadActivity Transform data formats TransformPayloadInput TransformPayloadOutput

Enums

Enum Values Purpose
ActionType Create, Update, Approve, Reject Order processing actions
BrightRiverStatus Pending, Processing, Completed, Failed Bright River specific statuses
OrderStatus Draft, Submitted, Approved, Rejected Order lifecycle statuses
ValidationSeverity Info, Warning, Error, Critical Validation error severity
DeliveryStatus Pending, Delivered, Failed Delivery operation statuses
HttpMethod GET, POST, PUT, DELETE HTTP method constants
NotificationType Email, SMS, Push Notification type definitions

๐ŸŽฏ Clean Architecture Benefits

Design Principles

  • Separation of Concerns - Clear boundaries between service domains
  • Dependency Inversion - Interfaces depend on abstractions, not concretions
  • Single Responsibility - Each contract has a single, well-defined purpose
  • Open/Closed Principle - Easy to extend without modifying existing contracts
  • Interface Segregation - Clients only depend on interfaces they use

Implementation Benefits

  • Maintainability - Clear structure makes code easy to understand and modify
  • Testability - Interfaces make unit testing straightforward
  • Extensibility - New features can be added without breaking existing code
  • Reusability - Contracts can be used across different implementations
  • Documentation - Clear interfaces serve as living documentation

๐Ÿš€ Production Readiness

The project follows all specified C# .NET development guidelines:

Code Quality

  • โœ… PascalCase naming conventions for all public members
  • โœ… Async/await patterns for I/O operations
  • โœ… Comprehensive error handling with custom exceptions
  • โœ… Dependency injection principles for loose coupling
  • โœ… Modern C# features (records, pattern matching, nullable references)

Performance & Security

  • โœ… Thread-safe immutable data contracts using records
  • โœ… Minimal allocations and optimized async patterns
  • โœ… Input validation and secure defaults
  • โœ… Comprehensive XML documentation for all public APIs
  • โœ… Nullable reference types for better type safety

Testing & Monitoring

  • โœ… Full test coverage for all contracts and extensions
  • โœ… Built-in audit tracking for workflow execution
  • โœ… Error tracking with detailed error information
  • โœ… Validation results for debugging and monitoring

๐Ÿ”ง Build and Deployment

Single Command Build & Publish

# PowerShell (Recommended)
.\scripts\build-and-publish.ps1 -ApiKey "your-nuget-api-key"

# Windows Batch
.\scripts\build-and-publish.cmd "your-nuget-api-key"

# Dry run (test without publishing)
.\scripts\build-and-publish.ps1 -ApiKey "your-nuget-api-key" -DryRun

Manual Build Process

# Restore packages
dotnet restore

# Build project
dotnet build --configuration Release

# Create NuGet package
dotnet pack --configuration Release --output nupkg

# Publish to NuGet
dotnet nuget push "nupkg\BR.Workflow.Contracts.1.0.17.nupkg" --source "https://api.nuget.org/v3/index.json" --api-key "your-api-key"

CI/CD Integration

The package includes scripts for:

  • Azure DevOps - Build and release pipelines
  • GitHub Actions - Automated workflows
  • Jenkins - Build automation
  • Local Development - Quick build and test

๐Ÿ“– Documentation

API Documentation

  • XML Documentation - Complete API documentation for all public members
  • IntelliSense Support - Full IntelliSense in Visual Studio and VS Code
  • Code Examples - Comprehensive usage examples in this README

Architecture Documentation

  • Clean Architecture - Well-organized structure following SOLID principles
  • Service Domain Separation - Clear boundaries between REI, REP, and PT services
  • Data Flow Diagrams - Understanding of how data flows through the system

Development Guides

  • Getting Started - Quick start guide for new developers
  • Best Practices - Guidelines for implementing contracts
  • Testing Strategies - Approaches for testing workflow contracts

๐Ÿค Contributing

When extending these contracts:

Code Standards

  1. Follow naming conventions (PascalCase for public members)
  2. Add comprehensive XML documentation for all public APIs
  3. Use nullable reference types appropriately
  4. Include data validation attributes where needed
  5. Ensure immutability using records
  6. Maintain service domain separation
  7. Add unit tests for complex validation logic

Pull Request Process

  1. Create feature branch from main
  2. Implement changes following existing patterns
  3. Add tests for new functionality
  4. Update documentation as needed
  5. Submit pull request with clear description

Testing Requirements

  • Unit tests for all new contracts
  • Integration tests for workflow patterns
  • Validation tests for data models
  • Performance tests for critical paths

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ†˜ Support

Getting Help

  • Documentation - Start with this README and XML documentation
  • Issues - Report bugs or request features via GitLab issues
  • Team Contact - Contact the RealEstate Platform team for direct support

Community

๐Ÿ”„ Version History

Current Version: 1.0.17

  • Latest Release - September 2024
  • .NET Version - 8.0
  • Temporal Version - 1.7.0
  • Key Features - Complete workflow contracts, activity interfaces, data models

Previous Versions

  • 1.0.16 - Initial release with basic contracts
  • 1.0.15 - Development version

Built with โค๏ธ by the Bright River RealEstate Platform Team

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.42 47 9/16/2025
1.0.41 49 9/15/2025
1.0.40 49 9/15/2025
1.0.39 111 9/12/2025
1.0.38 97 9/12/2025
1.0.37 94 9/12/2025
1.0.36 129 9/11/2025
1.0.35 127 9/11/2025
1.0.34 157 9/10/2025
1.0.33 123 9/10/2025
1.0.32 152 9/9/2025
1.0.31 137 9/9/2025
1.0.30 128 9/9/2025
1.0.29 128 9/9/2025
1.0.28 144 9/7/2025
1.0.27 93 9/5/2025
1.0.24 103 9/5/2025
1.0.23 121 9/5/2025
1.0.22 124 9/5/2025
1.0.21 130 9/5/2025
1.0.20 128 9/5/2025
1.0.19 138 9/4/2025
1.0.18 136 9/3/2025
1.0.17 135 9/3/2025
1.0.16 137 9/3/2025
1.0.15 149 8/31/2025
1.0.14 143 8/31/2025
1.0.13 145 8/31/2025
1.0.12 150 8/31/2025
1.0.11 116 8/31/2025
1.0.10 219 8/30/2025