gpt4 book ai didi

workflow - 如何编写包含 "Body Block"的自定义 WorkFlow 4 代码事件?

转载 作者:行者123 更新时间:2023-12-01 11:59:21 25 4
gpt4 key购买 nike

这可能吗?我知道这是针对 MS 的,因为他们有 WF 事件包,但我不确定它是如何完成的。如果能够使用带有 Body block 的 Activity 来插入其他 Activity、按钮等,那就太好了。如果不是太麻烦和/或太耗时的话。

最佳答案

如果您遵循一些规则,这很容易。下面是一个包含子项的 NativeActivity 示例:

[Designer(typeof(MyActivityDesigner)), ContentProperty("Child")]
public sealed class MyActivity :
NativeActivity, IActivityTemplateFactory
{
// this "activity delegate" holds our child activity
public ActivityAction Child { get; set; }

// may be necessary to do this
protected override void
CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddDelegate(Child);
}

protected override void
Execute(NativeActivityContext context)
{
// do some work here, then
context.ScheduleAction(Child);
}

// better to use a template factory than a constructor to do this!
Activity IActivityTemplateFactory
.Create(System.Windows.DependencyObject target)
{
return new MyActivity
{
// HAVE to have this set, or it fails in the designer!
Child = new ActivityAction()
};
}
}

注意几件事:我们使用事件委托(delegate)类型来容纳我们的 child 。其次,我们实现 IActivityTemplateFactory 来为设计器配置我们的事件。这样做总是比在构造函数中设置东西更好/更稳定。我们将绑定(bind)到委托(delegate)的属性,因此我们必须设置一个实例;否则绑定(bind)将失败。

当我们执行时,您所要做的就是在适当的时候安排您的 child 并返回。当然,您不应该阻止。

然后,在设计器中,您将像这样绑定(bind)到 Child:

<sap:WorkflowItemPresenter
HintText="Add children here!"
Item="{Binding Path=ModelItem.Child.Handler}" />

关于workflow - 如何编写包含 "Body Block"的自定义 WorkFlow 4 代码事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104929/

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