OutWit.Engine.Data 1.0.1

dotnet add package OutWit.Engine.Data --version 1.0.1
                    
NuGet\Install-Package OutWit.Engine.Data -Version 1.0.1
                    
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="OutWit.Engine.Data" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OutWit.Engine.Data" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="OutWit.Engine.Data" />
                    
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 OutWit.Engine.Data --version 1.0.1
                    
#r "nuget: OutWit.Engine.Data, 1.0.1"
                    
#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 OutWit.Engine.Data@1.0.1
                    
#: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=OutWit.Engine.Data&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=OutWit.Engine.Data&version=1.0.1
                    
Install as a Cake Tool

OutWit.Engine.Data

Data models, base classes, and utilities for WitEngine controllers and activities.

Overview

This package provides the foundational data structures and base classes for building WitEngine controllers. It includes activity base classes, variable implementations, serialization support, and common utilities.

Installation

dotnet add package OutWit.Engine.Data

Key Components

Activity Base Classes

Class Description
WitActivity Abstract base for all activities
WitActivityFunction Activity that returns a value to a variable
WitActivityCommand Activity that performs an action without return
WitActivityComposite Activity containing child activities
WitActivityTransform Activity with transformer (arrow syntax support)

Activity Adapter Base Classes

Class Description
WitActivityAdapterBase<T> Base adapter for simple activities
WitActivityAdapterFunction<T> Adapter for function activities
WitActivityAdapterComposite<T> Adapter for composite activities
WitActivityAdapterTransform<T> Adapter for transform activities

Variable Classes

Class Description
WitVariable<T> Generic typed variable
WitVariableObject Object variable (any type)
WitVariableTuple Key-value pair variable
WitVariableCollection Base for collection variables

Job Classes

Class Description
WitJob Main job implementation
WitActivityCollection Collection of activities
WitVariableCollection Collection of variables

Parameter Types

Class Description
WitConstantString String literal
WitConstantNumeric Numeric literal
WitConstantBoolean Boolean literal
WitConstantNull Null literal
WitReference Variable reference
WitCondition Conditional operator
WitArray Array of parameters

Status Classes

Class Description
WitProcessingStatus Job execution status
WitActivityStatus Individual activity status
WitProcessingResult Enum: Completed, Failed, Cancelled

Processing Classes

Class Description
WitProcessingTask Running job task with events
WitProcessingOptions Distributed processing configuration

Attributes

Attribute Description
[Activity("Name")] Marks a class as an activity
[Variable("Name")] Marks a class as a variable type
[Job("Name")] Marks a class as a job type
[RequiresCpu(...)] Specifies CPU requirements
[RequiresGpu(...)] Specifies GPU requirements
[RequiresOs(...)] Specifies OS requirements

Usage Examples

Creating a Custom Activity

[Activity("MyActivity")]
[MemoryPackable]
public partial class MyActivity : WitActivityFunction
{
    public IWitParameter? InputValue { get; init; }
    
    public override bool Is(ModelBase modelBase, double tolerance = 1E-07)
    {
        if (modelBase is not MyActivity other)
            return false;
        return base.Is(other, tolerance) 
            && InputValue.Check(other.InputValue);
    }

    protected override MyActivity InnerClone()
    {
        return new MyActivity { InputValue = InputValue?.Clone() as IWitParameter };
    }
}

Creating an Activity Adapter

internal class MyActivityAdapter : WitActivityAdapterFunction<MyActivity>
{
    public MyActivityAdapter(
        IWitControllerManager controllerManager,
        IWitProcessingManager processingManager,
        ILogger logger)
        : base(controllerManager, processingManager, logger)
    {
    }

    protected override async Task<object?> ProcessInner(
        MyActivity activity,
        IWitVariablesCollection pool,
        IWitActivityStatus? activityStatus,
        WitProcessingStatus status)
    {
        if (!pool.TryGetValue(activity.InputValue, out int input))
            throw new InvalidOperationException("Failed to get input");

        return input * 2;
    }

    protected override MyActivity CreateActivity(IWitParameter[] parameters)
    {
        if (parameters.Length != 1)
            throw new ArgumentException("Expected 1 parameter");

        return new MyActivity { InputValue = parameters[0] };
    }
}

Creating a Custom Variable

[Variable("MyType")]
[MemoryPackable]
public partial class MyVariable : WitVariable<MyData>
{
    public MyVariable() : base() { }
    public MyVariable(string name) : base(name) { }
    public MyVariable(string name, MyData value) : base(name, value) { }
}

Registering in a Controller Module

public override void Initialize(IServiceCollection services)
{
    services.AddVariable<MyVariable>();
    services.AddActivityAdapter<MyActivity, MyActivityAdapter>();
}

Serialization

All data types use MemoryPack for high-performance binary serialization. Mark your classes with [MemoryPackable] and make them partial:

[MemoryPackable]
public partial class MyActivity : WitActivityFunction
{
    // ...
}

Project Structure

OutWit.Engine.Data/
  Activities/          - Activity base classes
  ActivityAdapters/    - Adapter base classes
  Variables/           - Variable implementations
  Jobs/                - WitJob implementation
  Constants/           - Literal value types
  References/          - Variable reference types
  Conditions/          - Conditional operators
  Arrays/              - Array parameter type
  Status/              - Processing status classes
  Tasks/               - Processing task implementation
  Processing/          - Processing options
  Attributes/          - Activity/Variable attributes
  Exceptions/          - Engine exceptions
  Serialization/       - MemoryPack registration
  Utils/               - Extension methods and utilities

Dependencies

  • OutWit.Engine.Interfaces
  • OutWit.Common.Aspects
  • OutWit.Common.MemoryPack

License

This software is licensed under the Non-Commercial License (NCL).

  • Free for personal, educational, and research purposes
  • Commercial use requires a separate license agreement
  • Contact licensing@ratner.io for commercial licensing inquiries

See the full LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 (2)

Showing the top 2 NuGet packages that depend on OutWit.Engine.Data:

Package Downloads
OutWit.Engine.Parser

ANTLR-based script parser for WitEngine job DSL. Compiles job scripts into executable activity graphs for distributed processing.

OutWit.Engine.Shared

Shared infrastructure components for WitEngine host and node implementations. Provides controller management, job processing, and resource localization services.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 99 1/16/2026