携带请求体调用Elsa Workflow 2.11报错,类型转换失败求助
问题分析与解决方案
错误原因
你当前调用工作流时,将memoModel序列化为JSON字符串传入,但工作流中的HttpEndpoint活动期望接收HttpRequestModel类型对象而非字符串,因此触发类型转换异常。
解决方案
1. 直接传入对象(无需序列化)
Elsa支持直接传入对象,无需手动序列化为字符串,框架会自动处理对象的序列化/反序列化逻辑:
var workflow = await _workflowRegistry.FindByNameAsync(workflowDefinitionName, VersionOptions.Latest); await _workflowDispatcher.DispatchAsync(new ExecuteWorkflowDefinitionRequest(workflow!.Id, Input: new WorkflowInput() { Input = memoModel }), CancellationToken.None);
2. 配置工作流变量接收数据
如果需要在工作流中明确管理传入的数据,可通过Variables配置实现:
- 在工作流的Variables区域,添加一个与
memoModel类型匹配的变量(例如命名为MemoModel) - 调度工作流时,将输入值映射到该变量:
var workflow = await _workflowRegistry.FindByNameAsync(workflowDefinitionName, VersionOptions.Latest); var inputDict = new Dictionary<string, object> { { "MemoModel", memoModel } }; await _workflowDispatcher.DispatchAsync(new ExecuteWorkflowDefinitionRequest(workflow!.Id, Input: new WorkflowInput(inputDict)), CancellationToken.None); - 后续工作流活动中,可通过
Variables.MemoModel访问传入的数据
3. 手动处理字符串反序列化(可选)
如果必须传入字符串格式数据,可在工作流中添加Script活动,用C#脚本将字符串反序列化为目标类型:
using Newtonsoft.Json; var memoModel = JsonConvert.DeserializeObject<你的MemoModel类型>(Input); return memoModel;
将脚本输出绑定到后续活动所需的变量即可。
内容的提问来源于stack exchange,提问作者Roman Raj Bajracharya
相关产品推荐
相关产品推荐

