Workflow 4.0中的InvokeMethod

时间:2011-04-29 11:03:42

标签: workflow workflow-foundation workflow-foundation-4

我们有一个应用程序,我们正在创建一个活动(比如说= CallA),这个活动将在worklfow项目中使用。此活动(CallA)将调用另一个类(和另一个名称空间)中存在的方法。我已经为下面调用的方法编写了一个示例代码: -

    namespace WorkflowApplication1
{
    class Class1
    {
        public int Trial(int a, int b)
        {
            return 23;
        }
    }
}

我们希望使用工具箱中提供的InvokeMethod功能,并且不想使用代码活动。

如果有人使用WF 4.0的此功能,请提供帮助。

提前致谢。

2 个答案:

答案 0 :(得分:2)

在目标类型中,您必须指向实现该方法的类。

在方法名称中,您必须编写名称。如果该方法不是静态的,那么您需要创建该类类型的变量,事先对其进行初始化并在TargetObject属性中使用它。您需要在WF中使用一个变量来存储结果(在I​​nvoke活动中使用Result属性)

希望有所帮助

答案 1 :(得分:0)

以下是对此问题的建议

1)创建Windows窗体应用程序
2)添加一个名为Class 1的类,并将名称空间更改为WorkflowApplication1
3)将整个代码从1级更改为

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WorkflowApplication1
{
    public class Class1
    {
        public int Trial(int a, int b)
        {
            return 23;
        }
     }
}

4)添加名为Activity1的活动
5)编译解决方案
6)打开Activity1并添加序列
7)单击序列并创建2个变量,如下所示 enter image description here 8)插入InvokeMethod和Writeline活动,如下所示

enter image description here
9)编辑Invoke方法的参数,如下所示
enter image description here 10)添加一个按钮并单击它两次以创建Click事件
11)在Form1类中添加以下代码并更改button1_Click事件

namespace Generic
{

public partial class Form1 : Form
{

    WorkflowApplication WFApp = null;
    AutoResetEvent WFAppEvent = null;

    public void RunWFApp()
    {
        WFAppEvent = new AutoResetEvent(false);
        WFApp = new WorkflowApplication(new Activity1());

        WFApp.Completed = delegate (WorkflowApplicationCompletedEventArgs e)
        {
            WFAppEvent.Set();
        };
        WFApp.Run();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        RunWFApp();
    }

    ...
    ...
    }
}

12)打开“输出”窗口(Ctrl-Alt-O)。运行应用程序,单击按钮并检查数字23是否显示在输出窗口中