gpt4 book ai didi

c# - 在 StateMachine 中使用 CallExternalMethodActivity/HandleExternalEventActivity

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:12 25 4
gpt4 key购买 nike

我正在尝试让 StateMachine 在状态之间执行一些数据库操作。

所以我有一个“开始”状态,它使用 CallExternalMethodActivity 在用 ExternalDataExchangeAttribute 修饰的类上调用“BeginExecuteNonQuery”函数。之后,它使用 SetStateActivity 更改为“结束”状态。

“结束”状态使用 HandleExternalEventActivity 来监听“EndExecuteNonQuery”事件。

我可以单步执行本地服务,进入“BeginExecuteNonQuery”函数。

问题是“EndExecuteNonQuery”为空。

public class FailoverWorkflowController : IFailoverWorkflowController
{
private readonly WorkflowRuntime workflowRuntime;

private readonly FailoverWorkflowControlService failoverWorkflowControlService;
private readonly DatabaseControlService databaseControlService;

public FailoverWorkflowController()
{
workflowRuntime = new WorkflowRuntime();
workflowRuntime.WorkflowCompleted += workflowRuntime_WorkflowCompleted;
workflowRuntime.WorkflowTerminated += workflowRuntime_WorkflowTerminated;

ExternalDataExchangeService dataExchangeService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchangeService);

databaseControlService = new DatabaseControlService();
workflowRuntime.AddService(databaseControlService);

workflowRuntime.StartRuntime();
}

...
}

...

public void BeginExecuteNonQuery(string command)
{
Guid workflowInstanceID = WorkflowEnvironment.WorkflowInstanceId;

ThreadPool.QueueUserWorkItem(delegate(object state)
{
try
{
int result = ExecuteNonQuery((string)state);
EndExecuteNonQuery(null, new ExecuteNonQueryResultEventArgs(workflowInstanceID, result));
}
catch (Exception exception)
{
EndExecuteNonQuery(null, new ExecuteNonQueryResultEventArgs(workflowInstanceID, exception));
}
}, command);
}

我的实现有什么问题吗?

-斯坦

最佳答案

我无法从代码片段中看出,但请确保您使用的是 ExternalDataExchangeService 来托管您的服务,并且不要将您的服务直接添加到运行时。 ExternalDataExchangeService 负责添加所需的事件处理程序并将事件转换为工作流的排队消息。

关于c# - 在 StateMachine 中使用 CallExternalMethodActivity/HandleExternalEventActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com