AOFAX 服务器数据库开发接口说明
一、接口概述
AOFAX 数据库接口是为满足企业更多收发传真方式的一种扩展机制,实现了 AOFAX
传真系统与企业应用系统(如 ERP、MIS、OA 办公等)之间的交互和集成,从而达到扩展
和自定义企业收发传真模式的目的。
AOFAX 数据库接口系统由企业应用服务器、中间数据库以及 AOFAX 传真服务器组成,
结构如下图所示:
接口实现了传真的收发功能,收发过程如下:
发送传真:企业应用系统将待发送的传真任务信息写入中间数据库系统,AOFAX 传真
服务器从中间数据库读取发送任务,转换后提交发送,发送完成后将发送结果回写到中间数
据库,企业应用系统从数据库中读取发送结果并进行后续处理。
接收传真:AOFAX 传真服务器收到新传真后,自动将传真信息写入到中间数据库系统,
企业应用系统从中间数据库读取接收传真信息并进行后续处理。
二、系统部署
1、 准备软硬件环境:
传真服务器:AOFAX 企业型、服务器型。
数据库系统:MySQL、SQL Server、Oracle 等数据库系统。
企业应用系统:确保系统运作正常,并支持相应数据库系统的存取操作。
2、 配置数据库:
在已正常运作的数据库系统中创建所需的接口数据库和接口表:发送任务表
(aofax_send_task)、接收任务表(aofax_recv_task)。表结构和创建脚本参考后续
说明。
3、 创建 ODBC 数据源:
在 AOFAX 传真服务器上创建相应接口数据库的 ODBC 数据源 DSN 项,并确保连
接测试成功。
4、 配置 AOFAX 传真服务器:
启动 AOFAX 传真系统,在 AOFAX 管理器“工具”->“选项”菜单的“系统选项”对话
企业应用服务器
数据库DB
AOFAX传真服务器
3G-FAX
框中的“扩展任务”属性页中,选择“启用扩展任务调度”和“启用数据库接口收发传
真”,并输入正确的 DSN、UID 和 PWD 信息,确保连接测试成功。
三、开发说明
1、 发送传真:
在 AOFAX 传真服务器上创建临时文件夹(如 C:\fSendFax),用以保存企业应
用软件提交的待发送传真的文档(文档格式参考下面说明)。
企业用户在企业应用软件(如 ERP、OA 办公管理等)中发送传真时,发送界
面中需要把要发送传真的相关信息体现出来,主要包括收发件人名、区号、传真号
码、要发送的文档名等信息。在提交发送时把这些信息保存到中间数据库的
AOFAX 发送任务表(aofax_send_task)中,同时把要发送传真的文档提交到
AOFAX 传真服务器上的临时文件夹中,即上述在 AOFAX 传真服务器上创建的临
时文件夹(注意,在填写发送文档路径字段时,要填写绝对路径,例如:AOFAX
传真服务器上新建的临时文件夹为“C:\fSendFax”,提交的待发送的文档名称为
“ ” , 则 在 填 写 发 送 任 务 表 的 “ sendfile ” 字 段 时 , 应 填 写
“C:\fSendFax\”)。
文档提交以后,AOFAX 传真服务器定时扫描发送任务表,如果有待发送的文
档,将自动读出发送任务信息、转换并完成发送,同时把发送结果回写到发送任务
表中。
如果企业用户要安装 AOFAX 传真客户端,请安装 AOFAX 企业型或服务器型
中的客户端软件即可。
2、 接收传真:
AOFAX 传真服务器在接收到新传真后,自动把传真相关信息保存到中间数据
库的接收任务表(aofax_recv_task)中,用户可以通过读取接收任务表中的内容来
查看接收到的传真文件和传真信息。传真文件默认以 TIF 格式保存在 AOFAX 传真
服务器软件安装目录下的用户数据目录中。
3、 文档格式:
所有通过数据库接口提交的待发送传真文档,都是在 AOFAX 传真服务器端转
换成传真格式文件(.sfx)的,因此,如果要发送某种格式的文档时,这种格式的
浏览器或编辑软件必须安装在 AOFAX 传真服务器上,比如常用的 OFFICE 软件等
等。
能实现自动转换的常用格式有:.doc、.xls、.txt、.pdf、.wri 等。另外有些软件
不支持自动转换功能,如 WPS 等,即使安装了这种格式的软件,也不能实现自动
发送。同时建议提交的文档不要感染病毒,不要有密码等。
四、数据库表结构
发送传真任务表
表名:aofax_send_task
字段名 类型 长度(字节) 说明
taskid INTEGER 4 任务 ID,主键,自增长
title VARCHAR 200 传真主题
ic INTEGER 4 国际区号(必填,如 86,即时传真时填
0)
ldc INTEGER 4 长途区号(必填,如 755,即时传真或没
有长途区号时填 0)
fax VARCHAR 64 传真号码(发送有线传真时必填,如
83235170)
account VARCHAR 20 傲发帐号(发送即时传真时必填,如
AF90000099)
sender1 VARCHAR 100 发件人 1,标识传真发件人,如公司名
sender2 VARCHAR 30 发件人 2,标识传真发件人,如人名等
receiver1 VARCHAR 100 收件人 1,标识传真收件人,如公司名
receiver2 VARCHAR 30 收件人 2,标识传真收件人,如人名等
sendfile VARCHAR 500 待发送文件名(必填,绝对路径),多个
文 件 之 间 用 “ | ” 相 隔 ( 例 如 :
“C:\|D:\”)
sendflag INTEGER 4 发送标志(必填):
0:普通发送
1:优先发送(排到当前发送队列的首部)
line INTEGER 4 选择线路(必填):
0:自动调度(先尝试即时传真,失败后
由电话线发送)
1:仅电话线发送(fax 不能为空)
2:仅即时传真发送(account 不能为空)
status INTEGER 4 任务状态:
0:提交(等待转换)
1:发送(已转换并排队发送)
2:成功(传真发送成功)
3:失败(传真发送失败)
4:取消(传真发送被取消)
添加新任务时固定填写为 0,发送完成后
状态由系统回写
extinfo VARCHAR 200 扩展信息
retcode INTEGER 4 结果码,发送完成后由系统回写
sendtime INTEGER 4 发送时间(标准 C time_t 格式,从 1970
年 1 月 1 日 0 时 0 分 0 秒开始计算的秒
数),发送完成后由系统回写
faxfile VARCHAR 260 转换后传真文件名(TIF 格式,绝对路
径),发送完成后由系统回写
reserve1 INTEGER 4 保留字段 1,固定填 0
reserve2 INTEGER 4 保留字段 2,固定填 0
ext1 INTEGER 4 扩展字段 1,固定填 0
ext2 INTEGER 4 扩展字段 2,固定填 0
memo VARCHAR 200 备注
接收传真任务表
表名:aofax_recv_task
字段名 类型 长度(字节) 说明
taskid INTEGER 4 任务 ID,主键,自增长
title VARCHAR 200 传真主题
ic INTEGER 4 国际区号(发送方)
ldc INTEGER 4 长途区号(发送方)
fax VARCHAR 64 传真号码(发送方传真号码,即时传真
时 为 “ 传 真 号 码 / 傲 发 号 ” , 如
“83235170/AF90000099”)
sender1 VARCHAR 100 发件人 1,标识传真发件人,如公司名
sender2 VARCHAR 30 发件人 2,标识传真发件人,如人名等
receiver1 VARCHAR 100 收件人 1,标识传真收件人,如公司名、
部门等
receiver2 VARCHAR 30 收件人 2,标识传真收件人,如人名、分
机号等
faxfile VARCHAR 260 传真文件名(绝对路径,TIF 格式)
page INTEGER 4 传真页数
recvtime INTEGER 4 接收时间(标准 C time_t 格式,从 1970
年 1 月 1 日 0 时 0 分 0 秒开始计算的秒
数)
recvflag INTEGER 4 接收标志:
0:电话线传输方式
1:即时传真传输方式
deviceid VARCHAR 16 传真机 SN 码,主要用在多路的情况下标
识传真是从哪台 3G-FAX 接收
extinfo VARCHAR 200 扩展信息
ext1 INTEGER 4 扩展字段 1,固定为 0
ext2 INTEGER 4 扩展字段 2,固定为 0
memo VARCHAR 200 备注
五、SQL 脚本参考
1、MySQL:
DROP TABLE IF EXISTS aofax_recv_task;
CREATE TABLE aofax_recv_task (
taskid int(10) unsigned NOT NULL AUTO_INCREMENT,
title varchar(200) DEFAULT NULL,
ic int(10) unsigned DEFAULT NULL,
ldc int(10) unsigned DEFAULT NULL,
fax varchar(64) DEFAULT NULL,
sender1 varchar(100) DEFAULT NULL,
sender2 varchar(30) DEFAULT NULL,
receiver1 varchar(100) DEFAULT NULL,
receiver2 varchar(30) DEFAULT NULL,
faxfile varchar(260) DEFAULT NULL,
page int(10) unsigned DEFAULT NULL,
recvtime int(10) unsigned DEFAULT NULL,
recvflag int(10) unsigned DEFAULT NULL,
deviceid varchar(16) DEFAULT NULL,
extinfo varchar(200) DEFAULT NULL,
ext1 int(10) unsigned DEFAULT NULL,
ext2 int(10) unsigned DEFAULT NULL,
memo varchar(200) DEFAULT NULL,
PRIMARY KEY (taskid),
UNIQUE KEY taskid (taskid)
) ENGINE=MyISAM AUTO_INCREMENT=200 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS aofax_send_task;
CREATE TABLE aofax_send_task (
taskid int(10) unsigned NOT NULL AUTO_INCREMENT,
title varchar(200) DEFAULT NULL,
ic int(10) unsigned DEFAULT NULL,
ldc int(10) unsigned DEFAULT NULL,
fax varchar(64) DEFAULT NULL,
account varchar(20) DEFAULT NULL,
sender1 varchar(100) DEFAULT NULL,
sender2 varchar(30) DEFAULT NULL,
receiver1 varchar(100) DEFAULT NULL,
receiver2 varchar(30) DEFAULT NULL,
sendfile varchar(500) DEFAULT NULL,
sendflag int(10) unsigned DEFAULT NULL,
line int(10) unsigned DEFAULT NULL,
status int(10) unsigned DEFAULT NULL,
extinfo varchar(200) DEFAULT NULL,
retcode int(10) unsigned DEFAULT NULL,
sendtime int(10) unsigned DEFAULT NULL,
faxfile varchar(260) DEFAULT NULL,
reserve1 int(10) unsigned DEFAULT NULL,
reserve2 int(10) unsigned DEFAULT NULL,
ext1 int(10) unsigned DEFAULT NULL,
ext2 int(10) unsigned DEFAULT NULL,
memo varchar(200) DEFAULT NULL,
PRIMARY KEY (taskid),
UNIQUE KEY taskid (taskid)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
2、SQL Server:
if exists (select * from where id = object_id(N'[aofax_send_task]') and
OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [aofax_send_task]
GO
if exists (select * from where id = object_id(N'[aofax_recv_task]') and
OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [aofax_recv_task]
GO
CREATE TABLE [aofax_send_task](
taskid [int] IDENTITY (1, 1) PRIMARY KEY CLUSTERED NOT NULL,
title [varchar](200) NOT NULL DEFAULT (0),
ic [int] NOT NULL DEFAULT (0),
ldc [int] NOT NULL DEFAULT (0),
fax [varchar](64) NOT NULL DEFAULT (0),
account [varchar](20) NOT NULL DEFAULT (0),
sender1 [varchar](100) NOT NULL DEFAULT (0),
sender2 [varchar](30) NOT NULL DEFAULT (0),
receiver1 [varchar](100) NOT NULL DEFAULT (0),
receiver2 [varchar](30) NOT NULL DEFAULT (0),
sendfile [varchar](500) NOT NULL DEFAULT (0),
sendflag [int] NOT NULL DEFAULT (0),
line [int] NOT NULL DEFAULT (0),
status [int] NOT NULL DEFAULT (0),
extinfo [varchar](200) NOT NULL DEFAULT (0),
retcode [int] NOT NULL DEFAULT (0),
sendtime [int] NOT NULL DEFAULT (0),
faxfile [varchar](260) NOT NULL DEFAULT (0),
reserve1 [int] NOT NULL DEFAULT (0),
reserve2 [int] NOT NULL DEFAULT (0),
ext1 [int] NOT NULL DEFAULT (0),
ext2 [int] NOT NULL DEFAULT (0),
memo [varchar](200) NOT NULL DEFAULT (0),
) ON [PRIMARY]
GO
CREATE TABLE [aofax_recv_task] (
taskid [int] IDENTITY (1, 1) PRIMARY KEY CLUSTERED NOT NULL,
title [varchar](200) NOT NULL DEFAULT (0),
ic [int] NOT NULL DEFAULT (0),
ldc [int] NOT NULL DEFAULT (0),
fax [varchar](64) NOT NULL DEFAULT (0),
sender1 [varchar](100) NOT NULL DEFAULT (0),
sender2 [varchar](30) NOT NULL DEFAULT (0),
receiver1 [varchar](100) NOT NULL DEFAULT (0),
receiver2 [varchar](30) NOT NULL DEFAULT (0),
faxfile [varchar](260) NOT NULL DEFAULT (0),
page[int] NOT NULL DEFAULT (0),
recvtime [int] NOT NULL DEFAULT (0),
recvflag [int] NOT NULL DEFAULT (0),
deviceid [varchar](16) NOT NULL DEFAULT (0),
extinfo [varchar](200) NOT NULL DEFAULT (0),
ext1 [int] NOT NULL DEFAULT (0),
ext2 [int] NOT NULL DEFAULT (0),
memo [varchar](200) NOT NULL DEFAULT (0),
) ON [PRIMARY]
GO
2、Oracle:
drop trigger aofax_send_task_trigger;
drop sequence aofax_send_task_seq;
drop table aofax_send_task;
drop trigger aofax_recv_task_trigger;
drop sequence aofax_recv_task_seq;
drop table aofax_recv_task;
CREATE TABLE aofax_send_task (
taskid number(10),
title varchar2(200),
ic number(10),
ldc number(10),
fax varchar2(64),
account varchar2(20),
sender1 varchar2(100),
sender2 varchar2(30),
receiver1 varchar2(100),
receiver2 varchar2(30),
sendfile varchar2(500),
sendflag number(10),
line number(10),
status number(10),
extinfo varchar2(200),
retcode number(10),
sendtime number(10),
faxfile varchar2(260),
reserve1 number(10),
reserve2 number(10),
ext1 number(10),
ext2 number(10),
memo varchar2(200),
PRIMARY KEY (taskid)
);
create sequence aofax_send_task_seq start with 1 increment by 1 cache 5;
create trigger aofax_send_task_trigger
before insert on aofax_send_task
for each row
begin
select into : from dual;
end;
CREATE TABLE aofax_recv_task (
taskid number(10),
title varchar2(200),
ic number(10),
ldc number(10),
fax varchar2(64),
sender1 varchar2(100),
sender2 varchar2(30),
receiver1 varchar2(100),
receiver2 varchar2(30),
faxfile varchar2(260),
page number(10),
recvtime number(10),
recvflag number(10),
deviceid varchar2(16),
extinfo varchar2(200),
ext1 number(10),
ext2 number(10),
memo varchar2(200),
PRIMARY KEY (taskid)
);
create sequence aofax_recv_task_seq start with 1 increment by 1 cache 5;
create trigger aofax_recv_task_trigger
before insert on aofax_recv_task
for each row
begin
select into : from dual;
end;
commit;