工作流自动化迟早会将您引向工作流集成。当您自动化工作流时,您有时需要仅在另一个IT系统中可用的信息。例如,管理审批工作流需要知道哪个经理应该批准每个员工的请求,而人力资源(HR) IT系统跟踪每个员工的经理。
HR系统可以提供一种服务,让其他系统可以查找有关员工的信息,包括该员工的经理是谁。这些服务被称为“web服务”,因为系统通过URL(如http://hr.example.com/employee?email=ben@example.com)访问它们,就像你在web浏览器中加载网页一样。
本文向您展示了如何使用示例性HR Web服务进行工作流程集成的方法。本文适用于谁实施工作流程并且谁想要一个web服务集成所涉及到的概述,即使实际上是由其他人来实现。本文还包括集成使用的代码。
将流程角色分配给经理
即使是最简单的工作,您也可能需要工作流集成业务流程,例如基本假期请求过程。对于这个示例,考虑一个休假请求流程,该流程包含一个用于审批决策的“Approve request”任务,然后是结果通知。
这个过程定义了一个角色:完成审批任务的“经理”。在Signavio Workflow Accelerator中,您可以在用户任务的配置面板上的“使用角色分配”下定义此“Manager”。
这种角色分配的结果是,对于每个单独的休假请求,某人将采取“经理”角色。在工作流自动化术语,Manager是一个过程变量,其值将是一个工作流系统用户。请注意,作为一个休假请求经理就像一个会议主席——下一个将是其他人。
当您自动化休假请求流程时,结果是工作流系统知道谁提交了请求,但不知道他们的经理是谁。在Signavio Workflow中,提交触发器表单的人被称为“案例创建者”。“你需要的是找到一种方法,找出在你的组织中谁是案例创作者的经理。”
使用web服务查找员工的经理
当休假请求工作流程需要确定员工的经理是谁时,工作流系统将必须从人力资源系统请求信息。您可能希望以某种方式将员工管理器信息复制到工作流系统,但工作流自动化系统并不设计为作为数据库的工作。此外,如果您这样做,您将有一个新的(更难)的问题:如何将数据与人力资源系统保持同步。
对于此示例,另一个工作流集成方法是从HR系统获取每个休假请求的最新员工信息。在Web服务条款中,HR系统提供了可以查询的员工信息Web服务。
Web服务API规范
为此,员工信息web服务将响应以下对员工信息的HTTP请求,该请求通过电子邮件地址标识员工:
获取http://api.example.com/employee imail=ben%40example.com.
HTTP响应将是JSON文档,其中包含“Manager”属性,其价值是Manager的电子邮件地址:
{“Manager”:“Alice@example.com”}
在实践中,在提供更多员工信息的响应中可能存在其他属性。此Web Service API还将需要身份验证,授权和错误处理,这超出了本文的范围。
现在您需要从工作流调用这个web服务。
从signavio工作流程调用Web服务
通常,业务流程可以使用脚本任务或服务任务来运行可以从外部Web服务请求信息的代码。在SignaVio工作流程中,您使用脚本任务(称为'JavaScript操作'用于工作流集成。
在假期请求流程中,您可以在流程开始时添加一个“分配管理器”JavaScript动作。此脚本任务将使用员工信息web服务来确定案例创建者的管理员,并在创建“批准请求”任务之前将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集成有关这些库的更多信息的文档。
现在,您可以发布该过程并启动新案例以运行代码。您可以提交休假请求,以便在操作中查看自动管理器角色分配。
运行代码
假期请求工作流从一个触发器表单开始,员工可以通过填写“开始日期”和“结束日期”字段来请求假期。
在您启动案例之后,Signavio Workflow将显示案例详细信息视图,该视图提供了假期请求的概述。
在右侧,从底部开始,事件流显示Peter在六月创建了一周的假期请求,之后执行“分配管理器”脚本。接下来,创建“批准请求”任务。
在左侧,任务列表包含“Approve request”任务。角色显示任务被分配给了爱丽丝,彼得的经理。同时,Alice将收到一个电子邮件通知,一个新的‘Approve request’已经分配给了她。
工作流集成
即使是最简单的业务流程也可能需要一些系统集成。在实践中,工作流集成早晚都是一个问题。一些数据属于外部系统,可能参与多个业务流程。
Web服务集成是一种基于HTTP的系统集成的常见方法。Signavio的JavaScript操作允许您使用基于标准的技术进行工作流集成,这将导致使用商品技能直接实现。
如果您想自己尝试工作流集成,请注册一个天的免费试用signavio工作流程