Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将事件发送到Windows Workflow 4状态机以进入高级状态?_C#_Workflow Foundation 4_State Machine Workflow - Fatal编程技术网

C# 如何将事件发送到Windows Workflow 4状态机以进入高级状态?

C# 如何将事件发送到Windows Workflow 4状态机以进入高级状态?,c#,workflow-foundation-4,state-machine-workflow,C#,Workflow Foundation 4,State Machine Workflow,我正在考虑使用Windows工作流状态机(.NET 4.5),但需要一些指导 我有一个WCF服务,有一个状态机,可以打电话。假设各州: 初始化 响铃 连接的 忙碌的 没有回答 断开 可能的转变是: 召唤 连接 忙碌的 没有回答 断开 该服务公开了使用调用id和事件(“调用”、“连接”、“断开连接”等)调用的方法。我需要能够加载与该调用id相对应的特定状态机实例,并在事件中传递,以便它可以进入下一个状态(或者如果当前状态没有相应的转换,则不更改状态) 例如,如果状态机处于振铃状态,我们得到

我正在考虑使用Windows工作流状态机(.NET 4.5),但需要一些指导

我有一个WCF服务,有一个状态机,可以打电话。假设各州:

  • 初始化
  • 响铃
  • 连接的
  • 忙碌的
  • 没有回答
  • 断开
可能的转变是:

  • 召唤
  • 连接
  • 忙碌的
  • 没有回答
  • 断开
该服务公开了使用调用id和事件(“调用”、“连接”、“断开连接”等)调用的方法。我需要能够加载与该调用id相对应的特定状态机实例,并在事件中传递,以便它可以进入下一个状态(或者如果当前状态没有相应的转换,则不更改状态)

例如,如果状态机处于振铃状态,我们得到“连接”,我想将状态移动到已连接,但如果我们得到“忙”,我们移动到忙状态。然而,如果我们得到“断开连接”事件,状态机应该保持在振铃状态

我已经在无状态下成功地完成了这项工作,但我想在Windows工作流中尝试

MSDN示例并没有真正显示由外部事件驱动的状态机

1) 无论状态机处于何种状态,向状态机发送转换的好方法是什么?
2) 在给定某种ID的情况下,从数据库(不一定是SQL Server)加载/保存特定状态机实例(即其状态和变量)的好方法是什么?

在初始化状态的输入事件中,可以添加带有CorrelationInitializer和CanCreateInstance=true的接收活动。对于每个转换的触发器,您可以将一个接收活动(操作名为“Call”、“Connect”、“Busy”、“No Answer”、“Disconnect”)与相同的关联句柄相关联