0. 安装desktop agent
在后续过程中发现要预先安装desktop agent,否则没法运行自动化流程…
0.1 agent下载
参考官方文档说明
https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-user-in-rbsc-download-repository?locale=en-US
转到Control tower,选中agents update的磁贴
go to rbsc portal
转到Control tower,选中agents的磁贴
点击go to download page,转到下载页面
官方文档是这么说的,但是跳转过后出现的是500页面没法配置,很奇怪
好恶心,最后根据这个QA找到了答案
https://community.sap.com/t5/sap-teched-discussions/sap-teched-2022-ai180-ad182-prerequisites-setup-desktop-agent-3-rbsc-portal/m-p/12624541
可以通过https://tools.hana.ondemand.com/#cloud 下载trial版本的desktop agent
用个人邮箱注册的BTP就没办法进入RBSC Portal,SID注册的根据上述QA所答应该可以进入Portal
0.2 agent安装
版本是3.24.54
直接就装了,也不问我装哪儿
装完就在右下角默认启动了
0.3 agent注册
回到SAP Build的control tower,选择agent desktop
点击register agent,随后copy and close注册链接
回到桌面右下角desktop agent图标,add tenant
输入描述信息和刚刚拷贝的链接并保存
最后注册完就这样,然后激活该tenant
随后跳转到登录页,登录BTP试用账号即可
登录完成会自动关闭页面,回到desktop agent发现已经Active了(没active等会,需要点时间去connect)
回到SAP Build也能看到连接的设备了
0.4 agent 拓展
安装完desktop agent后,会给浏览器安装一个拓展程序,注意查看右上角图标,要启用这个拓展程序
1. 数据提取
看了SAP Build的数据提取示例,用了一张PDF发票作为模板给SAP Build学习,后续同类型的发票SAP Build自己就能识别到发票内容
1.1 新建流程
新建一个process,不明白可以回头参考SAP Build 1的内容
(不知道为啥编辑页面变成中文了,但其他的都是英文,SAP Build的语言有点奇怪)
触发器还是使用表格,表格中提供文件的本地路径即可
1.2 新建自动化
新建自动化,代理版本不要选错了
代理版本选错了也可以通过设置修改
创建完成先保存一下
1.3 新建发票数据结构
转到概览,新建数据类型
参考电信发票,创建了如下数据结构
1.3 设置自动化传入传出参数
打开自动化流程
右侧设置输入输出,输入使用文件路径即可,输出选择自定义的发票类型
再次保存
1.4 新建发票模板
概览页面新建文件模板
创建新模板
选择待识别的发票文件作为模板,喂给SAP Build学习
SAP 应该是对发票有特殊扫描,直接选发票就好了
针对发票,SAP预先设置了发票的数据模式,字段结构可以直接使用
选择新建,把模式映射到我们之前定义的数据类型上
根据之前的数据结构,一个个把变量名填入就行,记得设置变量类型
最后一步点击添加即可
1.5 配置模板映射
打开模板编辑器,等待SAP 扫描完毕,扫描结束就是下面这样,点击编辑按钮进行mapping
SAP把所有有可能的文本都扫描出来了,选中需要的文本就会进行字段分配,编辑值获取需要的结果,这里本来SAP扫描的是【开票日期2022年10月02日】,我手工删除了不必要的字段,只保留了年月日
依葫芦画瓢一个个设置就好了
最后映射完结果就长这样,保存即可
1.6 编辑自动化
回到自动化页面
右侧搜索extract,找到extract data(template),拖拽至流程中
选中extract data(template),添加文档模板,选择从当前项目中选择模板
模式和模板都使用之前创建的
最后选择添加即可
输入参数是文件路径,默认会将提取的结果提取到输出参数extractData中
找到之前预定义的发票结构,拖拽至流程中
从提取到的数据中,找到需要的数据依次对抬头赋值即可
行项目有点难弄,我怎么也没办法通过for each直接对es_invoice-item的行项目直接通过index添加,所以最后新建了一个gs_invoice_item的变量,将for each的结果放到gs_invoice_item[0]中,再将gs_invoice_item[0]添加到es_invoice-item下
不知道是不是我的姿势不对,可能有其他我不知道的方法
下图不正确,可以使用add item 控件直接赋值
我之前把add item控件的输入输出弄反了,所以一直弄不出来
最后放一个log查看提取的结果
1.7 测试
点击左上角的三角形可以测试
输入参数,点击test测试即可
然后就到加载页面了,应该是要把云端的package下载到安装desktop agent的本地电脑上,然后下载巨慢巨慢巨慢
折腾了一晚上,完全没办法运行,一直报错无法下载,查看日志也不说到底啥原因,很无语
第二天,关闭科学上网软件,重新运行机器人成功
模板的识别率貌似有待提高,我做了两个pdf,一个是作为模板上传的pdf,一个是ps后的pdf
PS后的发票加了一行行项目,改了一个开票日期和合计金额
只识别第一张pdf发票的时候还算正常,行项目也取出来了,只是购方名称和开票日期这俩字段把不必要的汉字也取出来了
下面的json是第一个发票log的结果
{
"type": "automationActivity",
"name": "irpa_core.log",
"label": "Log Message",
"inputs": [
{
"item": [
{
"desc": "*电信服务*电信业务使�费",
"unit": "项",
"quantity": 1,
"price": 185
}
],
"total_price": 185,
"invoice_no": 36587586,
"payer": "称:XX",
"invoice_date": "开票日期:2022年10月02日"
},
{
"key": "Info",
"value": 0
},
null
],
"containerInstanceUid": "306d170e-95a5-4c59-ba32-12f93a372b4d",
"parentInstanceUid": "306d170e-95a5-4c59-ba32-12f93a372b4d",
"stepId": "13",
"line": 19,
"file": "pDFInvoiceExtraction.js"
}
识别第二张ps的发票就有点问题了,行项目一个没取出来,其他的问题跟第一张发票一样,不知道是不是我ps水平有限
{
"type": "automationActivity",
"name": "irpa_core.log",
"label": "Log Message",
"inputs": [
{
"item": [],
"total_price": 585,
"invoice_no": 36587586,
"payer": "称:XX",
"invoice_date": "开票日期: 2023年10月02日"
},
{
"key": "Info",
"value": 0
},
null
],
"containerInstanceUid": "cb2a76a5-d90a-4c34-8e61-f473b8003ffb",
"parentInstanceUid": "cb2a76a5-d90a-4c34-8e61-f473b8003ffb",
"stepId": "13",
"line": 19,
"file": "pDFInvoiceExtraction.js"
}
即使我在模板处上传了第二张发票并做了标注,自动化的结果也没有发生改变,官方文档感觉不是很清楚,可能我自己也没读明白
https://help.sap.com/docs/build-process-automation/sap-build-process-automation/document-information-extraction-process-automation?locale=en-US&q=document%20template%20editor
2. 决策
决策是一个复杂的if-else 集合,相比嵌套的if-else使用决策可以简化显示,逻辑更清晰
下述场景使用决策表决定应收邮件的审批人
2.1 新建决策树
流程中插入决策树
2.2 添加输入输出参数
添加输入输出参数,输入为发票信息,输出为决策树判断后输出的审批人邮箱
2.3 新建规则
转到rule页签,添加规则
选择决策表,填写描述信息
假定价格和付款方作为条件
审批人作为结果
最后检查一下,没问题就创建
做了个简单的决策表
决策表的操作符官方文档如下:https://help.sap.com/docs/build-process-automation/sap-build-process-automation/operators?locale=en-US&q=document%20template%20editor
字符串用单引号括起来
对我来说决策表其实更像配置表,满足配置表条件时输出结果的数据
做完之后点击保存即可
2.4 测试
在流程中给决策添加输入输出的参数,输入来自上一步的发票提取结果,输出为新建的变量gv_approver
为了方便查看结果,结束之前发出邮件,在邮件中查看结果(此时会error,因为还没配置邮件服务)
配置好了就保存,然后发布,部署,部署完了从触发器获取表单的链接
填写文件路径,然后提交即可
问题又来了,流程监控器显示流程正在running而且流转到了启动自动化的步骤了,但是desktop agent丝毫没有反应
没有任何日志显示desktop agent接收到了流程
搞不明白了,切换到无人值守也无法启动,问题多多
3. 参考链接
教程(缺了sap agent的配置)
https://developers.sap.com/mission.invoice-processing-approval-spa.html
文档(不清不楚不明不白)
https://help.sap.com/docs/build-process-automation/sap-build-process-automation