AOFAX服务器数据库开发接口说明.docx
《AOFAX服务器数据库开发接口说明.docx》由会员分享,可在线阅读,更多相关《AOFAX服务器数据库开发接口说明.docx(19页珍藏版)》请在冰点文库上搜索。
AOFAX服务器数据库开发接口说明
AOFAX服务器数据库开发接口说明
一、接口概述
AOFAX数据库接口是为满足企业更多收发传真方式的一种扩展机制,实现了AOFAX传真系统与企业应用系统(如ERP、MIS、OA办公等)之间的交互和集成,从而达到扩展和自定义企业收发传真模式的目的。
AOFAX数据库接口系统由企业应用服务器、中间数据库以及AOFAX传真服务器组成,结构如下图所示:
接口实现了传真的收发功能,收发过程如下:
发送传真:
企业应用系统将待发送的传真任务信息写入中间数据库系统,AOFAX传真服务器从中间数据库读取发送任务,转换后提交发送,发送完成后将发送结果回写到中间数据库,企业应用系统从数据库中读取发送结果并进行后续处理。
接收传真:
AOFAX传真服务器收到新传真后,自动将传真信息写入到中间数据库系统,企业应用系统从中间数据库读取接收传真信息并进行后续处理。
二、系统部署
1、准备软硬件环境:
传真服务器:
AOFAX企业型、服务器型。
数据库系统:
MySQL、SQLServer、Oracle等数据库系统。
企业应用系统:
确保系统运作正常,并支持相应数据库系统的存取操作。
2、配置数据库:
在已正常运作的数据库系统中创建所需的接口数据库和接口表:
发送任务表(aofax_send_task)、接收任务表(aofax_recv_task)。
表结构和创建脚本参考后续说明。
3、创建ODBC数据源:
在AOFAX传真服务器上创建相应接口数据库的ODBC数据源DSN项,并确保连接测试成功。
4、配置AOFAX传真服务器:
启动AOFAX传真系统,在AOFAX管理器“工具”->“选项”菜单的“系统选项”对话框中的“扩展任务”属性页中,选择“启用扩展任务调度”和“启用数据库接口收发传真”,并输入正确的DSN、UID和PWD信息,确保连接测试成功。
三、开发说明
1、发送传真:
在AOFAX传真服务器上创建临时文件夹(如C:
\fSendFax),用以保存企业应用软件提交的待发送传真的文档(文档格式参考下面说明)。
企业用户在企业应用软件(如ERP、OA办公管理等)中发送传真时,发送界面中需要把要发送传真的相关信息体现出来,主要包括收发件人名、区号、传真号码、要发送的文档名等信息。
在提交发送时把这些信息保存到中间数据库的AOFAX发送任务表(aofax_send_task)中,同时把要发送传真的文档提交到AOFAX传真服务器上的临时文件夹中,即上述在AOFAX传真服务器上创建的临时文件夹(注意,在填写发送文档路径字段时,要填写绝对路径,例如:
AOFAX传真服务器上新建的临时文件夹为“C:
\fSendFax”,提交的待发送的文档名称为“abc.doc”,则在填写发送任务表的“sendfile”字段时,应填写“C:
\fSendFax\abc.doc”)。
文档提交以后,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:
\fax1.txt|D:
\fax2.txt”)
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
结果码,发送完成后由系统回写:
0:
未知原因
1:
忙
2:
无拨号音
3:
无应答
4:
文件格式错
5:
发送页前信号中断
6:
线路训练失败
7:
发送页后信号中断
8:
用户取消
9:
超时无应答
20:
待发送文件错误
21:
系统读写错误
22:
打印转换错误
sendtime
INTEGER
4
发送时间(标准Ctime_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
备注
subtype
INTEGER
4
提交类型:
0:
接口提交
1:
客户端提交
接收传真任务表
表名:
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
接收时间(标准Ctime_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
备注
readflag
INTEGER
4
已读标识:
0:
未读
1:
已读
五、SQL脚本参考
1、MySQL:
DROPTABLEIFEXISTSaofax_recv_task;
CREATETABLEaofax_recv_task(
taskidint(10)unsignedNOTNULLAUTO_INCREMENT,
titlevarchar(200)DEFAULTNULL,
icint(10)unsignedDEFAULTNULL,
ldcint(10)unsignedDEFAULTNULL,
faxvarchar(64)DEFAULTNULL,
sender1varchar(100)DEFAULTNULL,
sender2varchar(30)DEFAULTNULL,
receiver1varchar(100)DEFAULTNULL,
receiver2varchar(30)DEFAULTNULL,
faxfilevarchar(260)DEFAULTNULL,
pageint(10)unsignedDEFAULTNULL,
recvtimeint(10)unsignedDEFAULTNULL,
recvflagint(10)unsignedDEFAULTNULL,
deviceidvarchar(16)DEFAULTNULL,
extinfovarchar(200)DEFAULTNULL,
ext1int(10)unsignedDEFAULTNULL,
ext2int(10)unsignedDEFAULTNULL,
memovarchar(200)DEFAULTNULL,
PRIMARYKEY(taskid),
UNIQUEKEYtaskid(taskid)
)ENGINE=MyISAMAUTO_INCREMENT=200DEFAULTCHARSET=latin1;
DROPTABLEIFEXISTSaofax_send_task;
CREATETABLEaofax_send_task(
taskidint(10)unsignedNOTNULLAUTO_INCREMENT,
titlevarchar(200)DEFAULTNULL,
icint(10)unsignedDEFAULTNULL,
ldcint(10)unsignedDEFAULTNULL,
faxvarchar(64)DEFAULTNULL,
accountvarchar(20)DEFAULTNULL,
sender1varchar(100)DEFAULTNULL,
sender2varchar(30)DEFAULTNULL,
receiver1varchar(100)DEFAULTNULL,
receiver2varchar(30)DEFAULTNULL,
sendfilevarchar(500)DEFAULTNULL,
sendflagint(10)unsignedDEFAULTNULL,
lineint(10)unsignedDEFAULTNULL,
statusint(10)unsignedDEFAULTNULL,
extinfovarchar(200)DEFAULTNULL,
retcodeint(10)unsignedDEFAULTNULL,
sendtimeint(10)unsignedDEFAULTNULL,
faxfilevarchar(260)DEFAULTNULL,
reserve1int(10)unsignedDEFAULTNULL,
reserve2int(10)unsignedDEFAULTNULL,
ext1int(10)unsignedDEFAULTNULL,
ext2int(10)unsignedDEFAULTNULL,
memovarchar(200)DEFAULTNULL,
PRIMARYKEY(taskid),
UNIQUEKEYtaskid(taskid)
)ENGINE=MyISAMAUTO_INCREMENT=3DEFAULTCHARSET=latin1;
2、SQLServer:
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[aofax_send_task]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[aofax_send_task]
GO
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[aofax_recv_task]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[aofax_recv_task]
GO
CREATETABLE[aofax_send_task](
taskid[int]IDENTITY(1,1)PRIMARYKEYCLUSTEREDNOTNULL,
title[varchar](200)NOTNULLDEFAULT(0),
ic[int]NOTNULLDEFAULT(0),
ldc[int]NOTNULLDEFAULT(0),
fax[varchar](64)NOTNULLDEFAULT(0),
account[varchar](20)NOTNULLDEFAULT(0),
sender1[varchar](100)NOTNULLDEFAULT(0),
sender2[varchar](30)NOTNULLDEFAULT(0),
receiver1[varchar](100)NOTNULLDEFAULT(0),
receiver2[varchar](30)NOTNULLDEFAULT(0),
sendfile[varchar](500)NOTNULLDEFAULT(0),
sendflag[int]NOTNULLDEFAULT(0),
line[int]NOTNULLDEFAULT(0),
status[int]NOTNULLDEFAULT(0),
extinfo[varchar](200)NOTNULLDEFAULT(0),
retcode[int]NOTNULLDEFAULT(0),
sendtime[int]NOTNULLDEFAULT(0),
faxfile[varchar](260)NOTNULLDEFAULT(0),
reserve1[int]NOTNULLDEFAULT(0),
reserve2[int]NOTNULLDEFAULT(0),
ext1[int]NOTNULLDEFAULT(0),
ext2[int]NOTNULLDEFAULT(0),
memo[varchar](200)NOTNULLDEFAULT(0),
)ON[PRIMARY]
GO
CREATETABLE[aofax_recv_task](
taskid[int]IDENTITY(1,1)PRIMARYKEYCLUSTEREDNOTNULL,
title[varchar](200)NOTNULLDEFAULT(0),
ic[int]NOTNULLDEFAULT(0),
ldc[int]NOTNULLDEFAULT(0),
fax[varchar](64)NOTNULLDEFAULT(0),
sender1[varchar](100)NOTNULLDEFAULT(0),
sender2[varchar](30)NOTNULLDEFAULT(0),
receiver1[varchar](100)NOTNULLDEFAULT(0),
receiver2[varchar](30)NOTNULLDEFAULT(0),
faxfile[varchar](260)NOTNULLDEFAULT(0),
page[int]NOTNULLDEFAULT(0),
recvtime[int]NOTNULLDEFAULT(0),
recvflag[int]NOTNULLDEFAULT(0),
deviceid[varchar](16)NOTNULLDEFAULT(0),
extinfo[varchar](200)NOTNULLDEFAULT(0),
ext1[int]NOTNULLDEFAULT(0),
ext2[int]NOTNULLDEFAULT(0),
memo[varchar](200)NOTNULLDEFAULT(0),
)ON[PRIMARY]
GO
3、Oracle:
droptriggeraofax_send_task_trigger;
dropsequenceaofax_send_task_seq;
droptableaofax_send_task;
droptriggeraofax_recv_task_trigger;
dropsequenceaofax_recv_task_seq;
droptableaofax_recv_task;
CREATETABLEaofax_send_task(
taskidnumber(10),
titlevarchar2(200),
icnumber(10),
ldcnumber(10),
faxvarchar2(64),
accountvarchar2(20),
sender1varchar2(100),
sender2varchar2(30),
receiver1varchar2(100),
receiver2varchar2(30),
sendfilevarchar2(500),
sendflagnumber(10),
linenumber(10),
statusnumber(10),
extinfovarchar2(200),
retcodenumber(10),
sendtimenumber(10),
faxfilevarchar2(260),
reserve1number(10),
reserve2number(10),
ext1number(10),
ext2number(10),
memovarchar2(200),
subtypenumber(10),
PRIMARYKEY(taskid)
);
createsequenceaofax_send_task_seqstartwith1incrementby1cache5;
createtriggeraofax_send_task_trigger
beforeinsertonaofax_send_task
foreachrow
begin
selectaofax_send_task_seq.nextvalinto:
new.taskidfromdual;
end;
CREATETABLEaofax_recv_task(
taskidnumber(10),
titlevarchar2(200),
icnumber(10),
ldcnumber(10),
faxvarchar2(64),
sender1varchar2(100),
sender2varchar2(30),
receiver1varchar2(100),
receiver2varchar2(30),
faxfilevarchar2(260),
pagenumber(10),
recvtimenumber(10),
recvflagnumber(10),
deviceidvarchar2(16),
extinfovarchar2(200),
ext1number(10),
ext2number(10),
memovarchar2(200),
readflagnumber(10),
PRIMARYKEY(taskid)
);
createsequenceaofax_recv_task_seqstartwith1incrementby1cache5;
createtriggeraofax_recv_task_trigger
beforeinsertonaofax_recv_task
foreachrow
begin
selectaofax_recv_task_seq.nextvalinto:
new.taskidfromdual;
end;
commit;
六、注意事项
1、默认扫描数据库打印时间间隔为30000毫秒(30S)。
a.修改时间:
最少为15000毫秒(15S)
b.修改方法:
打开传真安装目录(D:
\ProgramFiles\AOFAX\AOFAXAdvan