工作流自动化迟早会将您引向工作流集成。当您自动化一个工作流时,您有时需要仅在另一个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工作流