只是想知道我们是否可以从控制器调用 K2 工作流?我有一个用 MVC 开发的 UI,需要实现一些工作流......有什么办法可以实现这个吗?是否有任何 K2 API?我们可以直接从控制器调用吗?任何指针,示例都会有所帮助。
提前致谢。
只是想知道我们是否可以从控制器调用 K2 工作流?我有一个用 MVC 开发的 UI,需要实现一些工作流......有什么办法可以实现这个吗?是否有任何 K2 API?我们可以直接从控制器调用吗?任何指针,示例都会有所帮助。
提前致谢。
你肯定可以用 MVC 中的 K2 做任何事情。他们有全系列的 API(Web 服务、dll 等)。您可以在此处查看开发人员参考。
您的 K2 安装包含您需要的所有 *.dll。默认位置是 C:\Program Files (x86)\K2 blackpearl\Bin。
下面是一个使用 SourceCode.Workflow.Client.dll 启动工作流的简单示例:(注意:我编写了自己的类库来处理我的所有 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 方法。
更多信息在这里。