跳至内容

EDI - 服务器部署及开发

为了能快速实现客户的数据报文处理,同时考虑后续新的报文格式及扩展,我们选用了bots-edi 系统 作为 EDI 系统,用来处理 EDI 报文数据。

bots-edi 官方文档

安装

此处是基于 linux 系统安装,如有其他需要请参考官方文档

需要使用 python2.6 或者 2.7
依赖
  • django >= 1.4.0, django <= 1.7.0
  • cherrypy > 3.1.0
源码 (从此处下载源码)
  1. 解压
    1. tar bots-3.2.0.tar.gz
  2. 安装
    1. cd bots-3.2.0
      python setup.py install

运行

  1. 使用 python 运行 bots-webserver.py
    1. python2.7 bots-webserver.py
  2. 访问 http://localhost:8080 即可进入后台


主要文件路径

  1. 配置文件
    1. ./bots/config/bots.ini 
    2. ./bots/config/settings.py
  2. 日志
    1. ./bots/botssys/logging/

系统主要结构

  1. bots-monitor
    1. 用户界面
  2. bots-webserver
    1.  web 服务器
  3. bots-engine
    1. EDI 服务器的核心,在这里处理 EDI 业务
  4. bots-jobququeserver
    1. 是EDI的队列

开发流程

  1. 我们使用 bots-edi 进行 EDI 处理时,需要通过脚本实现
  2. 在脚本内我们可以定义规则和逻辑,实现解析或者生成 EDI 的流程
  3. bots-edi 官方文档中,可以找到开发案例进行参考

bots-edi 脚本思路

解析 EDI 脚本

  1. 客户使用 AS2 发送 EDI报文到我们的 AS2 服务器
  2. AS2 服务器接到数据后,进行验证,保存数据
  3. EDI 服务器监听到指定目录有变化,启动解析流程
  4. 解析流程中触发对应的脚本,执行相应逻辑,映射订单到 ERP
生成 EDI 脚本

  1. ERP 中处理订单,完成发货、开票
  2. EDI 系统脚本定时检查 ERP 单据
  3. 当监控到有需要处理的单据,执行EDI 生成流程
  4. 根据脚本定义的逻辑,映射 ERP 单据为 EDI 文件,同时把文件放到指定目录(AS2 待发目录)
  5. AS2 服务器监听到待发目录有文件,自动发送给指定客户

脚本文件结构

  1. communicationscripts
    1. 定义通信脚本
    2. 用于传入/传出数据
  2. grammars
    1. 定义edi格式
    2. 可以从这里下载已经定义好的edi格式:
      1. https://sourceforge.net/projects/bots/files/grammars/
      2. 根据需要选择对应的格式,保存到grammars中即可
  3. mappings
    1. 映射脚本,用于将文件按grammars定义的规范解析/生成为指定文件
    2. mappings中的处理是需要遵循grammars定义的规范的
  4. routescripts
    1. 路由脚本
    2. 在路由中做一些扩展,实现附加操作
  5. botsindex
    1. 脚本定义文件
    2. 定义channel
    1. 定义translate
    2. 定义route

创建脚本

(方法一)直接在bots中修改代码/脚本

  1. 进入bots的源码文件,找到usersys
  2. 可以看到communicationscripts、grammars、mappings等文件,根据需要更新代码即可


(方法二)使用 Web 界面创建独立脚本

这种方式适用于需要将脚本打包成模块导出的情况
  1. 因为make出来的脚本需要重新导入才生效
  2. 实际上导入脚本,就相当于把文件放到了bots中
  3. 所以开发的原理也是一致的,如果不是为了打包/导出脚本,直接在bots中修改代码即可


保存后,系统会生成一个压缩包,这个压缩文件就是脚本的代码基础结构,我们解压后用 IDE 打开即可

导入脚本

  • 这一步是针对通过 web 界面单独创建的独立脚本,如果不是,则不需要这一步导入

独立脚本开发完成后,需要进行导入才能在 bots 中使用对应的脚本

  1. 导入成功后,可以在route、channel、translate中查看相关信息
  2. 【注意】导入route后,如果没有设置active的话,默认为False,如果需要使用,需要在配置中勾选开启active

脚本配置和使用

  1. 配置说明
    1. 执行脚本的时候实际是以 Route 为入口,可以通过 Route 来控制是否启用相关的功能
    2. Route
      1. 指定 incoming channel 和 outgoing channel
    3. Channel
      1. 定义如何收发文件,包括协议、地址、登录信息等
    4. Translation
      1. 定义要将文件从什么格式转换成什么格式
    5. Mapping
      1. 定义字段如何转换
  2. 实际配置需要根据开发的脚本需要,这里仅供参考
    1. 配置route
    2. 配置channel


运行脚本
  1. 可以通过手动触发 Run 菜单来运行所有已启动的 Route
  2. 也可以通过定时队列来触发

定时解析

  1. 通过linux的crontab -e实现定时解析功能

    1. 0 * * * * /usr/bin/python2 /usr/bots-3.2.0/bots-engine.py --new

这个定时功能需要结合队列使用

  1. 日志:bots/botssys/logging/jobqueue.log
  2. 流程
    1. 在bots.ini中开启队列,jobqueue - enabled=True
    2. 开启队列服务器 bots-jobqueueserver.py

邮件通知

  1. 在bots/config/settings 中配置


Odoo
EDI - AS2 服务器部署