OutWit.Engine.Interfaces
Core interface definitions for the WitEngine distributed computing system.
Overview
This package contains all public interfaces and contracts that define the WitEngine API. It is the foundation package that all other WitEngine components depend on.
Installation
dotnet add package OutWit.Engine.Interfaces
Key Interfaces
Engine Interfaces
| Interface |
Description |
IWitEngine |
Main engine interface for compiling and executing jobs |
IWitEngineNode |
Compute node interface for distributed execution |
IWitControllerHost |
Plugin interface for host-side controllers |
IWitControllerNode |
Plugin interface for node-side controllers |
IWitControllerManager |
Manages activity and variable adapters |
IWitProcessingManager |
Manages job execution and progress tracking |
IWitNodesManager |
Manages distributed compute nodes |
Job Interfaces
| Interface |
Description |
IWitJob |
Represents an executable job |
IWitJobBase |
Base interface for job-like structures |
IWitJobFactory |
Factory for creating job instances |
Activity Interfaces
| Interface |
Description |
IWitActivity |
Base interface for all activities |
IWitFunction |
Activity that returns a value |
IWitTransform |
Activity with transformer (arrow syntax) |
IWitActivityAdapter |
Adapter for parsing and processing activities |
Variable Interfaces
| Interface |
Description |
IWitVariable |
Base interface for all variables |
IWitCollection |
Variable that holds a collection |
IWitVariablesCollection |
Collection of variables (variable pool) |
IWitVariableAdapter |
Adapter for parsing variables |
Parameter Interfaces
| Interface |
Description |
IWitParameter |
Base for all parameter types |
IWitConstant |
Literal constant value |
IWitReference |
Reference to a variable |
IWitCondition |
Conditional operator |
IWitArray |
Array of parameters |
Processing Interfaces
| Interface |
Description |
IWitProcessingTask |
Represents a running job |
IWitProcessingStatus |
Status and result of job execution |
IWitProcessingOptions |
Configuration for distributed processing |
IWitBenchmarkOptions |
Options for activity benchmarking |
IWitBenchmarkResult |
Result of benchmark execution |
Capability Interfaces
| Interface |
Description |
IWitCapabilities |
Node hardware capabilities |
IWitEngineActivityNode |
Node with activity compatibility info |
Usage
Implementing a Controller Plugin
public class MyController : IWitControllerHost, IWitControllerNode
{
public void Initialize(IServiceCollection services)
{
services.AddVariable<MyVariable>();
services.AddActivityAdapter<MyActivity, MyActivityAdapter>();
}
}
Implementing an Activity Adapter
public class MyActivityAdapter : IWitActivityAdapter<MyActivity>
{
public IWitActivity CreateActivity(IWitParameter[] parameters)
{
// Parse parameters and create activity
}
public async Task<IWitProcessingStatus> Process(
Guid engineId,
Guid jobId,
MyActivity activity,
IWitActivityStatus? status,
IWitVariablesCollection pool,
bool reportProgress)
{
// Execute activity logic
}
}
Implementing a Variable Adapter
public class MyVariableAdapter : IWitVariableAdapter<MyVariable>
{
public IWitVariable CreateVariable(string name)
{
return new MyVariable(name);
}
}
Project Structure
OutWit.Engine.Interfaces/
IWitEngine.cs
IWitEngineNode.cs
IWitJob.cs
IWitActivity.cs
IWitVariable.cs
... (other interface definitions)
Dependencies
- Microsoft.Extensions.DependencyInjection
- OutWit.Common.Logging
- OutWit.Common.Plugins.Abstractions
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.