elsa-workflows / elsa-workflows/elsa-extensions
Feature: Output Converter Extension Module
- Dominant language
- C#
- Stars
- 49
- Forks
- 48
- Avg merge
- 21h 35m
- Merged PRs (30d)
- 20
Description
## Depends On
Requires support for the proposed **[Extensible Activity Output Converters](https://github.com/elsa-workflows/elsa-core/issues/7770)** capability within Elsa Core.
---
## Summary
Provide an optional extension module that registers reusable output converters and related integration components.
The goal is to make output conversion available without forcing all Elsa users to depend on or enable the feature.
---
## Proposed Module
Example:
```csharp
Elsa.OutputConverters
```
(or similar naming)
---
## Responsibilities
The module would:
- Register built-in output converters.
- Provide dependency injection extensions.
- Provide discovery mechanisms for converter implementations.
- Remain entirely opt-in.
---
## Potential Built-In Converters
### DataSet → Record Collection
Convert:
```csharp
DataSet
```
to:
```csharp
Dictionary[]
```
Useful for SQL query outputs and scripting activities.
---
### XML → JSON
Convert XML content into JSON structures.
---
### JSON → XML
Convert JSON content into XML documents.
---
### CSV → Object Collection
Convert CSV content into strongly structured collections.
---
### String → Enum
Convert string values into enum types.
---
### Binary Content Converters
Convert binary content into supported domain-specific representations.
---
## Extensibility
Application developers should be able to register their own custom converters through dependency injection.
Example:
```csharp
services.AddOutputConverter();
```
This would allow organisation-specific conversion logic to participate in the same conversion pipeline as built-in converters.
---
## Potential Future Integrations
Examples of modules that could benefit from output converters:
- Elsa.Sql (`DataSet` → Record Collection)
- File processing activities
- XML activities
- JSON activities
- Custom enterprise activities
The aim is to provide a reusable conversion mechanism that can be adopted incrementally by any module without changing its existing output contracts.
Contributor guide
Research direction
Start by reading the proposed Extensible Activity Output Converters capability in Elsa Core issue 7770, then review how Elsa extensions currently register services and integrations. Define the opt-in module boundary, built-in converter scope, discovery mechanism, and dependency-injection registration before implementation. Done means the module can be adopted independently and supports the agreed converter and custom-registration scenarios.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100