如何从MVC调用K2工作流程

时间:2015-02-10 19:01:23

标签: asp.net-mvc-4 workflow k2

所有 只是想知道我们是否可以从控制器调用K2工作流程? 我有一个在MVC中开发的UI,需要实现一些工作流......有什么方法可以实现这个目标吗?有没有K2 API?我们可以直接从控制器打电话?任何指针,例子都会有所帮助。

提前致谢。

2 个答案:

答案 0 :(得分:3)

你肯定可以使用MVC中的K2做任何事情。他们有各种API(Web服务,dll等)。您可以查看开发人员参考here

您的K2安装包含您需要的所有* .dll。默认位置是C:\ Program Files(x86)\ K2 blackpearl \ Bin。

这是一个使用SourceCode.Workflow.Client.dll启动工作流的简单示例:(注意:我编写自己的类库来处理我的所有K2交互,分离我的控制器的工作OUT,但是你如果你愿意,可以简单地将下面的方法放在你的控制器中。

using SourceCode.Workflow.Client;

public class MySampleK2Service: IMySampleK2Service
{

    private readonly string serverHost;
    private readonly string impersonatedUser;

    public MySampleK2Service(string serverHost, string impersonatedUser)
    {
        this.serverHost = serverHost;
        this.impersonatedUser = impersonatedUser;
    }

    public int StartNewWorkflow(string processName, string folio)
    {
        using (var connection = new Connection())
        {
            connection.Open(this.serverHost);

            if (this.impersonatedUser != null)
            {
                connection.ImpersonateUser(this.impersonatedUser);
            }

            var processInstance = connection.CreateProcessInstance(processName);
            processInstance.Folio = folio;
            connection.StartProcessInstance(processInstance, true);

            return processInstance.ID;
        }
    }
}

答案 1 :(得分:0)

您也可以使用K2提供的名为K2Services的Web服务。有了这些,你不需要任何参考。

例如,您可以使用REST API并使用GET方法轻松启动新流程。

如果您需要更多控制并通过DataField传递数据,您可以使用POST方法。

更多信息here