用了一个多星期的时间,终于把我在SAP NetWeaver Technology Tour中听到的最喜欢的一场演讲的演讲词整理出来了,由于项目进度很紧,一直在讨论业务流程,所以这篇演讲词也写的断断续续。现在把整篇合在一起发出来,方便想看的朋友。在演讲后的茶歇时间,我又向作演讲的工程师请教了一些问题,对交互式表单的两种提交方式和SAP后台对表单数据的处理有了更深一点的了解。如果有人想知道,可以在评论上问我。下面是演讲词的完全版。
利用Adobe的交互式表单精简业务流程
采用Adobe的交互式表单是有具体的商业需求的:基于纸张的表单需要手动的输入和填写,容易出错,耗费时间;一些解决方案电子表单式采用Html、电子表格、传真,这些媒体的表现形式不够正式,最重要的是基于纸张表单的流程很难被自动化。SAP和Adobe合作提供的交互式表单包含从核心系统提取的数据,他所带来的最大的好处就是基于电子表单的阅读功能可以完全的实现自动化。交互式表单可以是动态的,也可以是静态的,可以是在线的,也可以是离线的。
SAP和Adobe在2002年的时候就签署了合作协议,要把基于Adobe技术的pdf文件集成在SAP的NetWeaver的解决方案中。Adobe提供了表单的开放式格式和标准,我们所说的Adobe Form实际上就是PDF。SAP和Adobe合作是有很大的优势的, Adobe方面,在全球已经有5亿份的Adobe Reader部署在了windows,linux等PC机上,Adobe的表单有非常好的用户界面,大量已经使用的PDF文件还可以继续使用。SAP以前的表单使用的是SAP Script和Smart form这两种技术来实现的,大家接触过这两种技术的都知道在具体制作表单的时候是非常繁琐的。如果我们采用现在的PDF文件格式,能够大大的减少我们开发的effort。
交互式表单可以紧密的集成到SAP的NetWeaver平台中去,紧密的集成到SAP所驱动的业务流程的执行过程中。在表单执行所涉及到的流程中,我们可以连着SAP的系统进行在线的表单提交,也可以进行离线的提交,即先填好表单,再把表单提交到站点,或者通过email的形式回发到SAP的系统,完成离线的表单提交。表单中的一些Field,一些数据,可以通过SAP核心系统把数据抽取出来填到表单中去。用户在填完交换式表单之后,所填写的数据能够提交回后台系统,来修改后台SAP系统中表单的数据
举个例子:
政府机构中有许多表单,普通公民可以在政府的网站上把PDF的表单下载,然后离线使用Adobe Reader填写完成后,通过电子邮件附件发送到指定的地址。后台系统能够自动的接收电子邮件的附件,把用户填好的数据自动抽取出来,交给系统处理,然后把确认好的信息生成另一份PDF文件,通过email回复给发信人,作为正式的回复文档。
表单在SAP的环境中是如何工作的:
表单接口表单环境:我们要定义好什么数据怎么传送来填表单中应该填写的数据。
表单模板:表单有相应的layout,布局格式,这是由Adobe Designer来设计的
PSP的接口:基于XML,来说明表单的接口应该如何设计
XML DOM:文档对象模式,Adobe生成PDF文件的component完全是基于XML技术的,他需要把XML数据文件读取进来,通过解析生成一个二进制的XML DOM
交互式表单:表单里有一些控制单元,使得终端可以输入一些Text。
交互式表单作为一个电子文档是如何在一个业务流程中流转的:
首先。用Adobe Designer生成一个表单的template,Adobe Designer可以集成在ABAP的开发环境或者NetWeaver Studio里面的。接着,在NetWeaver Application Server里Java Engine里有一个高级文档服务的单元(ADS),负责把模板和用户提供的数据相结合,生成PDF文件。用户得到文件后,可能需要提交或修改信息,这完全是在Adobe Reader中进行的,填写完成后再通过email或者网站上传返回给Adobe的文档服务,Adobe的文档服务把数据抽取出来再进行下一步的工作,这就是电子文档在业务流程中的流转过程
表单的使用场合,包括在线和离线。在线即使用表单的应用程序是时刻和后台系统相连的,比较多的情况是我们用到的集成在Web Browser里面的的Adobe Reader的plugin,在浏览器中写数据,按提交键,数据能够通过Http协议迅速的传给服务器。非常多的场合,比如前面提到的政府机关的例子,是无法提供在线的模式的,因为用户需要把表单保存下来,过一段时间再填写,这里我们就用的了离线式的交互式表单。离线的交换式表单会生成一个独立的PDF表单供用户下载,或者作为邮件的附件发送给用户。最传统的一种离线式的表单只是用来打印的,这种形式的表单已经广泛的应用在了金融、证券、保险以及政府机关里,把PDF文件作为邮件附件来传送,这纯粹式作为一种电子凭证来进行B2B的应用场合。
PDF的生成步骤有3部分,第一,表单的设计者使用Adobe Designer设计Form template;第二部是提供一个XML的数据,先对Form template和XML数据进行分析,然后把两者进行合并生成Form DOM,里面包含了用户的数据;第三步,应用版面规则创建最终的PDF文件,这一步回生成诸如页号,header等信息,生成一个layout,再经过分页,就生成我们所看到的PDF文档。
生成好Form的模板之后是怎样集成在SAP NetWeaver平台中的呢?这个过程包括两部分:一部分是设计表单的模板,另一部分是设计SAP的ADS进行集成。表单模板的设计就像Visual Basic和Dreamweaver一样,可以进行拖放式的设计,非常简单。可以设计版面、元素,也可以编写脚本,支持标准的Javascript,还有Adobe自己的Caflisch script。后台的最底层的是NetWeaver的ADS(高级文档服务),上面的是Web service供应用来调用。Web service的好处是我们既可以通过写Java来调用,也可以用传统的ABAP程序来生成PDF文档。在生成文档的时候可以加入实时的run time form,比如权限的控制,控制我们的文档是不是允许用户进行打印,是不是允许存另一个副本等。还可以加入在电子商务中非常重要的数字签名,特别是涉及到一些应用的场合,我们发出的表单是有法律效应的,这时候就要把数字签名嵌入到表单里面。还有比如数据验证的功能,发布的数据是不是合法的,都可以进行验证。
交换式表单是紧密的集成在SAP的CAM和internet service request,CAM对应着离线的表单提交,internet service request对应着表单的在线提交。Adobe的PDF可以通过多种解决方案集成到SAP的NetWeaver中,最简单的就是编程序,设计一个template,再提供XML,就可以生成一个PDF文件了;我们也可以用Web Dynpro for Java和Web Dynpro for ABAP,ABAP WorkBench对Adobe提供了Component进行优化,可以大量的打印非交换式的表单。除了Excel报表和外部打印的报表外,SAP还把BI的智能报表集成在PDF文件中。以后SAP关于表单方面的开发将会完全采用PDF的方式,新版本的SAP系统,比如ECC5.0以及以后的ECC6.0的报表都会采用PDF文件的格式,而不会再使用Smart Form或者SAP Script。SAP提供了工具把以前的Smart Form转换成PDF的格式。
在线的表单提交一般用在企业内部,因为可以方便的连接到企业的服务器上,在企业的内部安全性是可以得到保障的。离线的表单提交一般用在企业和他的客户进行信息交换的时候,后台的系统把数据提取出来存储。这里存储的不一定是PDF格式的文件,可以存储交换提交的信息,也可以存储在SAP后台的表中。之后,还可以根据存储的信息生成另一份表单,来进行诸如信息评估之类的工作。整个过程是非常简单的,只需要通过邮件传送PDF文件,而且都是自动的,不需要人工的干预。
总结:基于Adobe软件的SAP交互式表单带来了很多好处:自动化的简化基于Form的业务流程,它是完全集成在SAP NetWeaver平台上,所以所有基于SAP NetWeaver的程序都可以使用,结合了开放技术标准的XML和PDF,可以部署在在线和离线的情况下,并且满足了大批量响应的需求。