将工作流与外部web服务集成

彼得·希尔顿|编剧6分钟读取
工作流集成-人与四臂坐在笔记本电脑前

一个系统集成教程,展示如何在审批工作流中使用脚本任务从另一个系统获取数据

工作流自动化迟早会将您引向工作流集成。当您自动化一个工作流时,您有时需要仅在另一个IT系统中可用的信息。例如,管理审批工作流需要知道哪个经理应该批准每个员工的请求,而人力资源(HR) IT系统则跟踪每个员工的经理。

HR系统可以提供一种服务,让其他系统查找有关员工的信息,包括该员工的经理是谁。这些服务被称为“web服务”,因为系统通过URL(如http://hr.example.com/employee?email=ben@example.com)访问它们,与您在web浏览器中加载网页的方式相同。

本文向您展示了如何将工作流集成到示例HR web服务中。这篇文章是写给那些实现工作流以及那些想要了解web服务集成所涉及的内容的人,即使实际上由其他人来实现。本文还包括集成使用的代码。

为经理分配流程角色

即使是最简单的工作也可能需要工作流集成业务流程,如基本假期申请流程.对于本例,考虑一个假期请求流程,该流程包含一个用于批准决策的“Approve request”任务,随后是结果通知。

这个过程定义了一个角色:完成审批任务的“经理”。在Signavio Process Governance中,您可以在用户任务的配置面板上的“使用角色分配”下定义这个“管理器”。

这种角色分配的结果是,对于每个单独的休假请求,都会有人担任“经理”角色。在工作流自动化在术语中,Manager是一个过程变量,其值将是一个工作流系统用户。请注意,做一个假期请求经理就像做一个会议主席——下一个将是别人。

当您自动化休假请求过程时,工作流系统知道谁提交了请求,但不知道谁是他们的经理。在Signavio Workflow中,提交触发表单的人被称为“Case Creator”。“你需要的是一种方法,弄清楚在你的组织中,案例创造者的经理是谁。

使用web服务查找员工的经理

当休假请求工作流需要确定员工的经理是谁时,工作流系统将不得不向人力资源系统请求信息。您可能希望以某种方式将员工-经理信息复制到工作流系统中,但是工作流自动化系统并不是设计为作为数据库工作的。此外,如果你这样做了,你将面临一个新的(更难的)问题:如何使数据与人力资源系统保持同步。

对于本例,工作流集成的另一种方法是从HR系统获取每个假期请求的最新员工信息。在web服务方面,HR系统提供了一个您可以查询的员工信息web服务。

Web服务API规范

为此,员工信息web服务将响应以下对员工信息的HTTP请求,该请求通过电子邮件地址标识员工:

得到http://api.example.com/employee?email=ben%40example.com

HTTP响应将是一个JSON文档,其中包含一个' manager '属性,其值是经理的电子邮件地址:

{"manager": "alice@example.com"}

实际上,响应中可能有其他属性提供更多的员工信息。此web服务API还需要身份验证、授权和错误处理,这超出了本文的范围。

现在您需要从工作流中调用此web服务。

从Signavio Workflow调用web服务

通常,业务流程可以使用脚本任务或服务任务来运行可以从外部web服务请求信息的代码。在Signavio工作流中,您使用名为“JavaScript操作’用于工作流集成。

在假期请求流程中,您可以在流程开始时添加“分配管理器”JavaScript操作。这个脚本任务将使用员工信息web服务来确定案例创建者的经理,并在创建“Approve request”任务之前将manager角色分配给正确的人。

选择“分配管理器”打开JavaScript动作配置。在流程变量表中,选择内置的“Case”变量和“Manager”角色变量,使它们对脚本可用。

在“脚本代码”区域,输入如下JavaScript (EcmaScript 2016)代码:

const users = require('users') const requestOptions = {uri: 'https://api.example.com/employee', qs: {email: _case.creatorId。emailAddress}} const assignManager = (error, response, body) => {if (error) {console.log('error: ' + error);返回;} const managerEmail = JSON.parse(body)。manager manager = users.findByEmail(managerEmail)}请求。get (requestOptions assignManager)

最后一行使用请求库发送HTTP请求。assignManager函数从JSON响应中提取经理的电子邮件,并使用users库查找相应的Signavio Workflow用户。看到JavaScript集成文档以获取有关这些库的更多信息。

现在您可以发布流程并启动一个新案例来运行代码。您可以提交一个休假请求,以查看自动的Manager角色分配。

运行代码

假期请求工作流从一个触发表单开始,员工通过填写“开始日期”和“结束日期”字段来请求假期。

启动案例后,Signavio Workflow显示了案例详细信息视图,该视图提供了假期请求的概述。

在右边,从底部开始,事件流显示Peter在6月创建了一个为期一周的假期请求,之后执行了“分配管理器”脚本。接下来,创建“Approve request”任务。

在左侧,任务列表包含“Approve request”任务。头像显示任务被分配给Peter的经理Alice。与此同时,Alice将收到一封电子邮件通知,通知她有一个新的“批准请求”已分配给她。

工作流集成

即使是最简单的业务流程也可能需要一些系统集成。工作流集成在实践中迟早都是一个问题。一些数据属于外部系统,可能参与多个业务流程。

Web服务集成是基于HTTP的系统集成的常用方法。Signavio的JavaScript操作允许您使用基于标准的技术进行工作流集成,从而使用普通技能实现简单的实现。

如果您想自己尝试工作流集成,请注册一个30天免费试用的Signavio工作流

发布日期:2017年4月21日-最后修改:2020年11月13日