公文交换主要通过公文的导出和导入实现与第三方公文系统的数据交换:
- 公文导出:通过公文交换模块将协同平台公文导出到第三方系统。
- 公文导入:通过公文交换模块将第三方系统公文导入到协同平台。
1. 概述
公文交换主要由公文交换模块实现,公文交换模块做为一个相对独立的功能模块可采用单独部署的方式,也可采用与系统紧耦合部署的方式。单独部署时,公文交换模块通过调用远程
WebService接口与协同系统和第三方系统进行交互。与协同系统紧耦合部署时,公文交换模块必须与协同系统部署在同一虚拟目录下,公文交换模块以本地调用的方式与协同系统进行交互.
与第三方系统的交互仍然采用远程WebService调用的方式。采用不同的部署方式公文交换模块的实现方式不同,所以在公文交换模块实现前,必须首先确定系统的部署环境。
具体实现请参考demo目录中的公文交换例程。
2. 公文导出(发送)
2.1. 公文导出流程
公文导出由待导出公文列表页面的导出事件触发,公文交换模块通过公文交换接口获取公文信息,并将协同格式公文信息转化为第三方系统格式公文信息,最后调用第三方系统公文交换接口将公文信息发送到第三方系统。
1.在协同平台提供的公文导出列表选择导出的公文,执行公文导出操作,以所选择公文的ID为参数调用公文交换模块。若公文交换模块单独部署,则操作必须通过远程WebService调用,若公文交换模块与平台紧耦合部署,则可采用本地调用的方式。
2.公文交换模块根据公文ID由A8公文交换接口获取公文信息,若为远程WebService调用,则公文信息以XML形式返回,若为本地调用,则可返回公文实体DocumentExport。
3.将XML或DocumentExport转化为符合第三方系统格式的XML。
4.将符合第三方系统格式的XML发送至第三方系统,完成本次公文导出。
2.2. 接口说明
接口名称:DocumentService
方法:exportEdoc
参数:
参数 | 数据类型 | 说明 |
---|---|---|
tokenId | string | 登录验证后获取的身份令牌。 |
documentId | long | 要导出公文的ID。 |
返回值:导出公文的XML
2.3. 代码示例
本地调用:
import com.seeyon.v3x.services.document.impl.DocumentManager;
import com.seeyon.v3x.services.document.DocumentFactory;
…
DocumentFactory service = DocumentManager.getInstance();
DocumentExport export = service. exportEdoc (documentId);
3. 公文导入(接收)
3.1. 公文导入流程
公文导入流程由第三方系统触发,第三方系统调用公文交换模块接口,将公文XML发送至公文交换模块,公文交换模块将第三方系统格式公文转化为A8格式公文,并调用A8公文交换接口将公文发送至A8系统,完成公文导入。
1.第三方系统发送XML公文,公文交换模块提供远程WebService或本地调用接口,第三方系统通过接口将XML公文发送至公文交换模块,该XML公文为第三方系统格式。
2.公文交换模块将第三方系统格式公文转化为A8格式公文。公文交换模块单独部署时,第三方系统公文转化为A8格式XML,公文交换模块与A8紧耦合部署时,可将外部公文转化为DocumentExport。
\3. 将符合A8格式的XML公文或DocumentExport发送至A8公文交换接口。远程调用时发送XML格式公文,本地调用时发送DocumentExport。
3.2. 注意事项
1.公文正文处理方式:导入公文前先通过uploadService上传正文附件,把上传后返回的ID做为参数放入xml文档,正文有3种类型:flowContent_html(TextHtmlExport)、flowContent_att (TextAttachmentExport)、flowContent_form(FormExport),根据上传正文类型的不同,替换导入xml中的粗体部分
2.附件处理方式:导入公文前先通过uploadService上传附件,把上传后返回的ID做为参数放入xml中的attachmentList 部分。
建文人(docCreatePerson)、 签发日期(signingDate)必填,其他字段参照文件 A8公文测试.xml
节点值或节点value中不能含回车、换行。
3.3. 接口说明
接口名称:DocumentService
方法:importEdoc
参数 | 数据类型 | 说明 |
---|---|---|
token | string | 登录验证后获取的身份令牌。 |
xml | string | 要导入公文的xml数据。 (导入格式请参考公文导出的xml格式) |
返回值:成功返回公文的id,否则抛ServiceException。
3.4. 代码示例
本地调用:
Import com.seeyon.oainterface.impl.exportdata.EdocImporter;
DocumentExport export= new DocumentExport();
EdocImporter importer=new EdocImporter();
long documentId = importer.importEdocDocument(export);
4. 公文签收回执
A8或第三方系统签收公文时可以通过接口给对方发送一个回执,写入签收人姓名、签收单位、签收意见和签收时间等信息。
4.1. A8签收第三方系统公文
第三方系统签收公文时调用A8签收服务实时通知A8
4.2. 第三方系统签收A8公文
实现一个公文签收事件的监听器,监听A8签收第三方公文,将A8签收回执实时通知第三方系统,实现方式详见事件监听。
5. 公文状态回写
第三方系统接收到A8导出的公文后,可通过公文状态回写接口将公文处理结果反馈到A8系统,该操作由第三方系统直接调用A8公文交换接口完成,公文交换模块无需提供该功能的实现。
5.1. 方法说明
说明:用于公文交换发送以后更新A8系统内公文状态为已发送,第三方系统签收公文后也可回写状态为已签收
参数:
参数 | 数据类型 | 说明 |
---|---|---|
tokenId | string | 登录验证后获取的身份令牌。 |
edocSendId | long | 公文交换待发送公文实体的id |
accountId | string | 公文接收单位的id(多个用,号分隔) |
accountName | string | 公文接收单位的名称(多个用,号分隔) |
state | int | 为1更新状态为已发送 为2更新状态为已签收(第三方系统已签收) |
返回值:成功返回1,否则抛ServiceException。
5.2. 代码示例
本地调用:
import com.seeyon.v3x.services.document. impl.DocumentManager;
import com.seeyon.v3x.services.document.DocumentFactory;
…
DocumentFactory service = DocumentManager.getInstance();
service. updateEdocState(1234,"123456789","单位1",0);