我正在尝试在延迟结束时自动恢复工作流(使用延迟活动)如果您使用 WorkflowServiceHost,则会自动完成,但我使用的是 WorkflowApplication。
互联网上有一些代码可以处理这个问题,这是 我使用 WorkflowApplication 来实现这些目标的示例:
- 用户创建一个任务,该任务遵循一个工作流
- 用户使用重新托管的设计器设计自己的工作流程,他的工作流程定义保存在数据库中。
- 每个工作流定义可以在数据库中保存不同的版本,以允许用户修改其工作流,当对任务执行操作并需要恢复书签时,代码使用正确的版本
- 可以使用工作流启动任务,因此在任务表中我存储了用于该任务的工作流定义和版本。
我现在遇到的问题是使用延迟活动时使用上面链接的代码,当检测到可运行实例时,我需要创建一个 WorkflowApplication 并使用 LoadRunnableInstance 方法来加载工作流:
if (hasRunnableWorkflows)
{
Console.WriteLine("Found runnable workflows");
WorkflowApplication app = new WorkflowApplication(...);
app.InstanceStore = store;
app.LoadRunnableInstance();
}
问题是:
- 要调用 LoadRunnableInstance,我需要创建 WorkflowApplication,因此我需要将根活动提供给 WorkflowApplication CTor
- 要创建根活动,我需要知道我需要从数据库加载哪个工作流(和版本)
- 要知道要加载哪个工作流,我需要任务 ID
- 要知道任务 ID,我需要知道 Workflow ID,它只有在调用 LoadRunnableInstance 后才可用
所以......我需要打破这个循环:)
有人知道在加载工作流之前获得工作流 ID 的方法吗?