资讯详情

资讯详情

Tiptop与Easyflow单据签核集成:环境搭建、程序改造与避坑指南

简介这份PDF面向Tiptop ERP与Easyflow电子签核系统的实施人员与二次开发工程师聚焦两系统在单据签核环节的对接问题。内容围绕Tiptop作业审核时将单据信息以XML抛转至Easyflow、签核结果再回写Tiptop的双向流程展开涵盖环境配置、数据表签核字段确认、Schema更新、单据性质设置、抛转信息维护、PER与4GL档修改、AWS模块公共与抛转程序说明以及集成测试与常见错误排查等环节并附有集成示意图与操作界面说明。资源包共1个PDF文件约1.94MB适合作为实施前的流程参照与开发时的步骤清单。目前已有1515人学习下载读者可据此理清集成脉络、对照检查配置项减少联调阶段的反复试错。1. 从一张工单卡在“送签中”说起Tiptop 与 Easyflow 单据签核集成环境怎么搭去年帮一家制造企业排查一个怪问题工单在 Tiptop 里点了审核界面提示“送签中”可签核人的收件箱里死活刷不出这张单。查了半天最后发现是.profile里EFSOAP那行地址还指着测试机的旧 IPAppserver 重启后压根没读到新配置。这种坑在 tiptop oa 接口集成里太常见了——Tiptop 和 Easyflow 之间的单据签核本质是 Tiptop 审核时把单据拼成 XML 字符串推给 Easyflow签核人处理完再由 Easyflow 回调 Tiptop 的服务回写栏位。链路上一环没配好单据就悬在半空。这篇笔记按我实际部署的顺序把环境、数据表、抛转程序、Easyflow 表单、联调验证一路写下来新手能照着走通熟手能对照着看版本和参数取舍。2. 环境与数据表准备先把 Appserver 和 7 个签核栏位钉死集成能不能跑起来八成取决于这一步有没有做扎实。Tiptop 端和 Easyflow 端的交互全部走 Appserver所以第一件事不是急着改程序而是确认 Tiptop for Browser 版已经装好、startweb已经把 Appserver 拉起来了。我一般会先开一个终端跑ps看一眼进程再确认.profile里的三个 Easyflow 相关变量因为这三个值写错一个后面所有抛转都是白费功夫。2.1 确认 Appserver 与 .profile 里的三个地址Tiptop 端通过 Appserver 与 Easyflow 通信.profile里需要维护 Easyflow 服务器 IP、服务器名和 SOAP 接口位置。具体 IP 随服务器而异下面是我在一套模拟环境里的写法# EasyFlow Server IP EFSITEIP192.168.0.250; export EFSITEIP # EasyFlow Server Name EFSITENAMEEF2KWeb; export EFSITENAME # EasyFlow SOAP Location EFSOAPhttp://192.168.0.250/EF2KGateWay/EF2KGateWay.WSDL; export EFSOAPEFSITEIP是 Easyflow 服务器的地址EFSITENAME是服务器名EFSOAP指向网关的 WSDL 描述文件。改完.profile必须重新登录或source一次再重启 Appserver否则进程读的还是旧值——前面那个“送签中”卡死的案例就是这么来的。另外要确认 Easyflow 服务器端已经装好 TiptopEasyflow 集成包这个包没装后面 ColumnSet.xml 和集成向导都无从谈起。提示改.profile前先cp .profile .profile.bak改错了能立刻回滚这是我在生产机上养成的习惯。2.2 检查数据表里的 7 个签核栏位一张单据要走电子签核它对应的数据表必须包含 7 个签核相关栏位。以请购单单头档pmk_file为例对照表如下栏位含义是否关键pmkmksg是否签核关键pmk25签核状态关键pmksign签核等级多级签核用非关键pmkdays签核完成天数非关键pmkprit签核优先顺序非关键pmksseq已签核顺序系统维护非关键pmksmax应签核顺序系统维护非关键前两个是每支作业都必须维护的关键栏位其中“签核状态”在各表里名字可能不同比如出货单里叫ta_ogaefstat。后四个简单签核一般用不上但检查时 7 个都要确认存在缺的按客制规范补建。单身档通常不放签核栏位。签核状态的取值也要心里有数0开立、1已核准、6结案、9作废、S送签中、R送签退回、W抽单出现别的字符多半是作业内部特殊用途比如2表示转采购单。2.3 更新 schema 与单据性质设置栏位确认完跑r.s2 dsx更新 schema 资料让系统认识这些栏位。接着进各子系统的单据性质设置作业把要签核的单别勾上“是否签核”。制造模块看smy_file销售子系统看oay_file通用单据性质设置作业是asmi300。这里有个容易忽略的点同一支作业可以按单别决定某张具体单据走不走签核所以必须先选或新建一个“是否签核”为选中状态的单别否则后面抛转程序生成了也白搭。我见过有人程序全改完测试时单据死活不抛转最后就是单别没勾。3. 抛转程序与标准作业改造aws 模块怎么配、4gl 怎么改Tiptop 端的核心是 aws 模块。它和其他模块目录结构一样4gl下分两类程序一类是公共模块把与 Easyflow 交互的底层操作封装成函数比如aws_efcfg.4gl、aws_efsrv.4gl、aws_efcli.4gl、aws_efstat.4gl、aws_xml.4gl、aws_efgw.4gl、aws_eflog.4gl等另一类是抛转模块与各支作业一一对应比如aws_aapt110.4gl对应aapt110.4glaws_asfi301.4gl对应asfi301.4gl数量随需要签核的单据增减。3.1 用 aws_efcfg 维护签核信息并生成范式程序aws_efcfg是一支维护窗体定义签核作业时用它维护 Tiptop 端单据的签核信息。操作顺序是先在界面上把各个栏位设好然后务必点按钮维护单头和单身栏位最后点“产生范式程序”系统会在aws/4gl目录下按设置预生成一支aws_xxx.4gl你在这个基础上改不用从零写。单头栏位维护界面左边填要通过 XML 传递的单头档栏位右边“参照字段”填需要从其他表 JOIN 过来替代原栏位的字段。典型场景是传客户信息时想传客户名称occ02而不是客户编码oga04左边填oga04参照字段填occ02生成的程序组 SQL 时会自动 JOINocc_file组 XML 时用occ02的值顶替oga04的位置。单身栏位维护界面和操作方式相同。注意界面上那个“传送栏位资讯”按钮会按 Tiptop 资料库设置完全重建 Easyflow 端的 Columnset.xml但实际文件和数据表资料未必一致我不建议用它自动更新Columnset.xml 一律手工维护后面 Easyflow 部分会讲。3.2 抛转作业 aws_xxx.4gl 的结构与三种改法抛转作业整个文件描述一个函数aws_efcli_cf()各模块结构一致声明一个 RECORDsr存中间信息组一个l_sql从库里取抛转资料赋给sr再循环按sr记录生成 XML 字符串。默认情况下sr、sql、xml三者完全一致需要动的地方就三种栏位不能直接从库里取、要先处理就定义中间变量再赋给 XML选取栏位和 XML 传递栏位数量有差异某个不传或取不到以及状态码要翻译成中文提示。下面这段是典型改法CASE WHEN sr.oga001 CALL cl_getmsg(aws-003,g_lang) RETURNING g_msg WHEN sr.oga002 CALL cl_getmsg(aws-004,g_lang) RETURNING g_msg WHEN sr.oga003 CALL cl_getmsg(aws-005,g_lang) RETURNING g_msg END CASE LET l_oga00 g_msg # 地址栏位特殊拼装 CALL s_addr(sr.oga01,sr.oga04,sr.oga044) RETURNING l_oap.oap041,l_oap.oap042,l_oap.oap043 LET sr.addr l_oap.oap041 CLIPPED, ,l_oap.oap042 CLIPPED, ,l_oap.oap043 CLIPPED LET g_strXMLInput g_strXMLInput CLIPPED, oga00, l_oga00 CLIPPED, /oga00, ASCII 10, oga04, sr.occ02 CLIPPED, /oga04, ASCII 10, addr, sr.addr CLIPPED, /addr, ASCII 10, /head, ASCII 10, body, ASCII 10cl_getmsg按语言取提示信息s_addr把地址拆成三段再拼回一个字符串ASCII 10是换行符保证 XML 可读。注意oga04里塞的是sr.occ02这就是前面参照字段 JOIN 进来的客户名称。改完这段XML 的栏位名必须和 Easyflow 端 Columnset.xml 完全对应顺序可以不同名字错一个就解析不出来。3.3 标准作业里加 xxx_ef() 函数和审核分支标准作业要加对抛转的支持以出货单axmt620为例。先加一个xxx_ef()函数核心是从现有签核作业推荐apmt420请购单拷贝同名函数再改IF aws_efcli(l_title, g_oga.oga01[1, 3], g_oga.oga01, , , , , ) THEN LET g_success Y LET g_oga.ta_ogaefstat S # 签核状态置为送签中 LET g_oga.ogaconf Y # 审核状态置为已审核 IF g_oga.ogaconfX THEN LET g_chrY ELSE LET g_chrN END IF IF g_oga.ta_ogaefstat1 OR g_oga.ta_ogaefstat2 THEN LET g_chr2Y ELSE LET g_chr2N END IF IF g_oga.ta_ogaefstat6 THEN LET g_chr3Y ELSE LET g_chr3N END IF CALL cl_set_field_pic(g_oga.ogaconf,g_chr2,g_oga.ogapost,g_chr3,g_chr,) DISPLAY BY NAME g_oga.ta_ogaefstat,g_oga.ogaconf CALL cs_ogasta(oga,g_oga.ta_ogaefstat,g_oga.ogaconf,g_oga.ta_ogamksg) RETURNING g_sta DISPLAY g_sta TO FORMONLY.desc2 UPDATE oga_file SET ta_ogaefstat g_oga.ta_ogaefstat, ogaconf g_oga.ogaconf WHERE oga01 g_oga.oga01 COMMIT WORK ELSE LET g_successN END IF两个LET是手工维护的重点签核状态设S送签中审核状态设Y已审核。cl_set_field_pic按状态设界面图标确认未签核显示“确”签核通过显示“核”。cs_ogasta是放在 CSUB 目录下的客制作业把状态码翻成中文提示比如S传出“送签中”。最后直接 UPDATE 并 COMMIT。然后改原有审核函数在完成所有判断、还没开始任何事务性操作的位置插一段IF g_success Y THEN IF g_oga.ta_ogamksg Y AND g_oga.ogaconf N THEN CALL t600_ef() IF g_success N THEN ROLLBACK WORK END IF RETURN # 走签核流程原审核过程不再自动执行 END IF END IF这里判断是否需要电子签核ta_ogamksg且当前未确认ogaconf符合就调xxx_ef()后直接 RETURN。这意味着单据一旦走签核原有审核代码基本作废审核只起送签作用。所以原审核段里的事务性操作要另想办法把被屏蔽的代码拷贝成一个新函数是拷贝不是移动新增一个 Action 比如confirm_ef供用户在签核核准后执行条件是ta_ogaefstat 1不走签核的单据仍走原审核代码对程序影响最小。3.4 收尾per 档、p_perlang、p_link、p_ze 与编译剩下几件收尾活别漏。改标准作业的 per 档增加签核栏位显示有客制栏位就跑p_perlang维护栏位显示在p_link里加对 aws 的链接新增作业还要维护p_zz在p_ze里维护程序新增的提示信息。另外要改所有涉及显示标志图片的地方判别方法是定位所有cl_set_field_pic调用按上面第一段的样子改。取消审核、作废这些事务性操作也要加签核状态判断需要签核的不允许作废和取消审核签核状态不为1的不能做事务性操作。最后加一个浏览签核状态的 Action代码可以拷贝现成的FUNCTION i301_approval_status() IF g_aza.aza23 MATCHES [ Nn] THEN # 未设定与 EasyFlow 签核 CALL cl_err(aza23,mfg3551,0) RETURN END IF IF g_sfb.sfb01 IS NULL OR g_sfb.sfb01 THEN # 尚未查询资料 CALL cl_err(, -400, 0) RETURN END IF IF g_sfb.ta_sfbefstat NOT MATCHES [S1WR] THEN RETURN END IF CALL aws_efstat(g_sfb.sfb01) END FUNCTION粗体位置按各支作业改单据号码这里是sfb01和签核状态ta_sfbefstat。全部改完编译执行Tiptop 端才算就绪。4. Easyflow 端配置表单目录、ColumnSet.xml 与审批流程Tiptop 端把 XML 推过来Easyflow 端得接得住。这一侧的工作量不比 Tiptop 小顺序是建表单目录、设计表单样式、建数据表、改 EF2Kweb.xml 和 ColumnSet.xml、开放单据、设审批流程、建表单关联。4.1 复制表单目录并批量改名Easyflow 存放表单信息的目录是Program Files\EF2Kweb\ASP\CHT\Forms。在Forms下拷贝一个已有 Tiptop 单据目录为新目录名比如把TT_SO1复制成TT_WO1然后把目录下所有文件名按新单号改掉。接着进三个 Init 结尾的 asp 文件TT_WO1_Approve_Init.ASP、TT_WO1_Create_Init.ASP、TT_WO1_Display_Init.ASP以及Grid.ASP把里面所有旧单号TT_SO1替换成TT_WO1。这一步用编辑器的全局替换最快但替换完要逐个文件搜一遍旧单号确认没有漏网的。4.2 设计电子表单控件 ID 命名规则别弄错改Forms.ASP编辑表单外观用网页编辑工具调整控件位置和布局尽量和 Tiptop 表单一致。控件一般两种就够多行文本框和选择框日期用选择框其余用文本框。关键是控件 ID 有两组标签的按xxx_1命名如sfb01_1控件的按xxx_2命名如sfb01_2系统按栏位名从 XML 取数据再解析 ID 填充。这里弄错表单上就是一片空白而且不报错排查起来很费劲。单身表格用 OCX 嵌入不需要特别设置。4.3 建数据表、改 EF2Kweb.xml 与 ColumnSet.xml在 SQL Server 里以原有表单对应的数据表为基础复制一张新表改对应栏位名建议用导入导出。然后到EF2KwebPackages\tiptop目录改EF2Kweb.XML复制现有单据项目的方式增加新单据 ID。再改同目录的ColumnSet.xml增加 Program 段内容必须和 Tiptop 端aws_xxx抛转模块的 XML 格式完全相同——栏位顺序不必一致名称必须完全对应。注意XML 里必须抛转一个资料所有者xxxuser栏位它不显示在电子表单上但 Easyflow 要靠它解析填单人、驱动流程。这个栏位漏了流程走不起来而且现象很隐蔽。4.4 开放单据、设审批流程、建表单关联进 Easyflow 左边“管理程序清单”→“流程基本数据”→“表单性质维护操作”查询后点开对应表单按界面设置各项。显示否、生效日失效日这几项要特别注意没设或设错表单就显示不出来永久生效可忽略失效日。设完还要滚到屏幕最下面新建权限文件不设权限表单照样不显示。审批流程走“电子表单模块”→“管理程序清单”→“自动向导”→“流程设定向导”选表单新增一关审批并指定审批人比如设为 439Tiptop 抛过来的单据就直接进 439 的收件夹审批完流程结束回写 Tiptop。最后建表单关联同一路径下“易拓集成向导”点“新增表单关联”选 Tiptop 程序代号向导会自动列出有抛转机制的作业、工厂代号下面会列出单据性质里勾了签核的单别再选 Easyflow 对应表单代号点“新增关联”。5. 避坑排查集成联调里最常见的 5 个翻车点联调阶段的问题大多有规律下面 5 条是我踩过或帮人救过的按“现象 → 原因 → 解决”记下来。现象一点审核提示送签成功签核人收件箱没有单据。原因通常是.profile里EFSOAP地址不对或 Appserver 没重启进程读的还是旧配置也可能是 Easyflow 端表单性质里“显示否”没设或权限文件没建。解决先source .profile重启 Appserver再核对表单性质和权限。现象二表单能打开但栏位全是空的。多半是控件 ID 命名错了标签没按xxx_1、控件没按xxx_2或者 ColumnSet.xml 里栏位名和 Tiptop 抛转的 XML 对不上。解决拿一条实际抛转的 XML 字符串逐栏位比对 ColumnSet.xml再检查 Forms.ASP 里的 ID。现象三签核完 Tiptop 栏位没回写。检查 Easyflow 端是否装了 TiptopEasyflow 集成包以及 Tiptop 提供的回写服务是否可达。另外xxxuser栏位没抛转也会导致流程解析不到填单人回写链路断掉。现象四单据性质勾了签核审核时却不走签核流程。常见是单别选错或者数据表里 7 个栏位没建全尤其“是否签核”和“签核状态”两个关键栏位缺失。解决回数据表核对栏位再进单据性质设置确认单别状态。现象五签核状态显示乱码或显示成数字。p_ze里提示信息没维护或者cs_ogasta没按本作业状态码改。解决补p_ze提示信息核对cs_ogasta传入的状态值。6. 装完怎么验证从开单到回写的完整走查环境搭完别急着交付按一条完整链路走一遍才算数。我一般用asfi301工单作业做验证新增一张工单单别选勾了签核的那个保存后确认审核状态为N、签核状态为0、提示“开立”点“审核”提示框选“是”抛转成功会给出成功提示此时签核状态应变成S送签中。接着切到 Easyflow用指定审批人登录收件夹里应出现这张单打开表单核对栏位值和 Tiptop 一致尤其客户名称、地址这些经过 JOIN 和特殊拼装的栏位。执行核准后回 Tiptop 刷新签核状态应为1审核状态为Y界面图标显示“核”。再试一次退回R和抽单W确认状态流转和提示信息都对。最后验证反向操作需要签核的单据在未核准前点作废或取消审核应该被拦住。验证清单可以按这个表逐项打勾验证项预期结果开单保存审核状态 N签核状态 0提示“开立”点审核抛转签核状态变 S提示送签成功Easyflow 收件箱出现对应单据栏位值与 Tiptop 一致核准回写签核状态 1审核状态 Y图标“核”退回/抽单状态变 R/W提示正确未核准作废被拦截不允许操作有一次我图省事只测了核准没测退回结果上线后签核人一退回Tiptop 那边状态没刷新单据卡在送签中出不来又得临时补程序。从那以后我每次集成完都强制把核准、退回、抽单、作废拦截四条路径全走一遍一条不落。希望这套走查清单能帮到你少熬几个联调的夜。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →