如何从 MVC 调用 K2 工作流

How to Invoke K2 workflow from MVC

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

提前致谢。

您当然可以使用 MVC 中的 K2 做任何事情。他们拥有全套 API(Web 服务、dll 等)。您可以查看开发者参考 here.

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

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

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;
        }
    }
}

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

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

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

更多信息here