gpt4 book ai didi

c# - DynamicActivity - 如何调用存储在数据库中的工作流?

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

这是一个概念验证项目 - 目标是创建一个应用程序来接收一些系统范围的事件并根据一些业务规则调用特定的工作流。

工作流是单独创建的,xaml 源存储在数据库中。

以下是用于调用工作流的代码:

public void RaiseEvent(IEvent e, IEventData eventData)
{

var typeName = e.GetType().FullName;

// Query Db for all workflows for the event
var repo = new WorkflowRepository();

var workflows = repo.GetActiveWorkflowsByEvent(typeName);

foreach (var wf in workflows)
{

var condition =
ConditionEvaluator.PrepareCondition(wf.Condition.Expression, eventData);

var okToStart = ConditionEvaluator.Evaluate(condition);
if (okToStart)
{

// Next line is throwing an exeption
object o = XamlServices.Parse(wf.WorkflowDefinition.Expression);


DynamicActivity da = o as DynamicActivity;

WorkflowInvoker.Invoke(da,
new Dictionary<string, object>
{{ "EventData", eventData }});


}

}

我们已经创建了非常简单的工作流程,可以自行运行而不会出现问题。但是当使用 XamlService.Parse 加载 xaml 时,它会抛出以下异常:

System.Xaml.XamlObjectWriterException was unhandled
Message='No matching constructor found on type 'System.Activities.Activity'.
You can use the Arguments or FactoryMethod directives to construct this type.'
Line number '1' and line position '30'.

知道哪里出了问题吗?谢谢。

最佳答案

不确定是什么导致了您的问题,我过去使用 XamlServices.Load() 没有任何问题,但在运行时加载工作流 XAML 的最简单方法是使用 ActivityXamlServices.Load()。参见 here举个例子。

关于c# - DynamicActivity - 如何调用存储在数据库中的工作流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118250/

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