协同OA办公系统的短信接口实现过程
协同OA办公系统的短信接口
OA目前使用短信猫作为内置的短信发送设备,但往往客户本身已经采购了其他的短信服务商的产品,比如中国电信的企信通等等,如果要改用其他供应商的短信发送装置的话可以通过OA短信接口实现。厦门OA短信接口包含了sendSMS (msg)方法,客户开发人员只要用自己的业务逻辑实现这个方法,厦门泛普OA系统在需要发送短信的时候就会调用客户自己开发的发送方式。
另外,泛普OA提供了基于中间表的接口实现,客户可以直接使用。这个接口实现的原理是把要发送的短信数据按照和短信设备供应商约定的格式写道中间表中,由短信设备供应商定时去获取数据并发送(大多数短信设备供应商已经提供了通过中间表方式发送短信的功能。)
在理解了上面的原理之后,接下来讲解一下配置使用接口的方法。
1. 找到ecoloyg安装目录/WEB-INF/service/sms.xml,打开这个文件,里面的内容如下:
<module id="sms" version="1.0.0">
<service-point id="smssender" interface="think.sms.SmsService">
<invoke-factory>
<construct class="think.sms.JdbcSmsService">
<set property="type" value="sqlserver"/>
<set property="host" value="192.168.0.204"/>
<set property="port" value="1433"/>
<set property="dbname" value="OA3802"/>
<set property="username" value="sa"/>
<set property="password" value="123"/>
<set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>
</construct>
</invoke-factory>
</service-point>
</module>
需要关注的是红色部分的内容。这里逐一说明.
<set property="type" value="sqlserver"/>: 指定中间表所在数据库的类型,如果是oracle的话就改为value="oracle"
<set property="host" value="192.168.0.204"/>: 指定中间表所在数据库服务器的ip
<set property="port" value="1433"/>: 指定中间表所在数据库的端口,如果是oracle的话应改为1521
<set property="dbname" value="OA3802"/>: 指定中间表所在数据库名
<set property="username" value="sa"/>: 指定中间表所在数据库帐号
<set property="password" value="123"/>:指定中间表所在数据库密码
以上的配置和think.properties中的参数差不多,应该不难理解。
<set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>: 指定往中间表插入数据使用的sql语句。例子中的这条sql是根据一个客户的需求写的,客户提供的中间表结构是:
表名:OutBox
字段:ReceiverMobileNo, ----------------接受人
Msg, ----------------短信内容
SendTime, -----------------发送时间
IsChinese, -----------------是否中文
ExpressLevel, -----------------紧急程度
Sender ----------------发送人
实际上厦门泛普OA短信接口只需要用到接受人和短信内容两个字段,这两个字段的值不是固定的,由短信接口负责把数据传过来,因此用?号表示他们的值。其他字段的值不用关心,可以随便写死一些数据,这个例子里全部写的是1,发送时间是用sql server自带的函数getDate()获取的。
不妨这样理解,最简单的中间表可以是这样子的:
表名:someTable
字段:MobileNo,
messageBody
2. 修改OA/WEB-INF/prop/think_rtx.properties中的内容为:
IsInitRTXOrg=true
IsDownLineNotify=true
#CurSmsServer=rtx
CurSmsServerIsValid=true
RTXServerPort=8036
RTXServerIP=
RTXServerOutIP=
也就是说只要把CurSmsServer=rtx用#号注释掉就可以了。
下面是两个建中间表的sql脚本供参考:
1. for sqlserver
CREATE TABLE outbox (
ID int IDENTITY (1, 1) ,
ExpressLevel int ,
Sender varchar (50) ,
ReceiverMobileNo varchar (50),
Msg varchar (500) ,
SendTime datetime,
IsChinese bit
)
3. for oracle
create table OUTBOX
(
ID NUMBER not null,
EXPRESSLEVEL NUMBER,
SENDER VARCHAR2(50),
RECEIVERMOBILENO VARCHAR2(50) not null,
MSG VARCHAR2(500),
SENDTIME DATE not null,
ISCHINESE NUMBER not null
);
create sequence OUTBOX_ID_SEQ
minvalue 1
maxvalue 999999999
start with 141
increment by 1
cache 20;
CREATE OR REPLACE TRIGGER "SET_OUTBOX_ID" BEFORE
INSERT ON "OUTBOX"
FOR EACH ROW
DECLARE
NEXT_OUTBOX_ID NUMBER;
BEGIN
SELECT OUTBOX_ID_SEQ.NEXTVAL INTO NEXT_OUTBOX_ID FROM DUAL;
:NEW.ID := NEXT_OUTBOX_ID;
END;
oracle下对应的sms.xml文件内容为:
<module id="sms" version="1.0.0">
<service-point id="smssender" interface="think.sms.SmsService">
<invoke-factory>
<construct class="think.sms.JdbcSmsService">
<set property="type" value="oracle"/>
<set property="host" value="192.168.0.204"/>
<set property="port" value="1521"/>
<set property="dbname" value="think1"/>
<set property="username" value="OA40002"/>
<set property="password" value="OA"/>
<set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,(select sysdate from dual),1,1,'1')"/>
</construct>
</invoke-factory>
</service-point>
</module>
客户开发人员可以自己实现接口:
public class TestService implements SmsService{
public boolean sendSMS(String smsId,String number,String msg){
System.out.println("接受人:"+number);
System.out.println("测试短信:"+msg);
。。。
return true;
}
}
那么OA系统在发送短信时将会调用TestService中的sendSMS方法。
把这个实现部署到OA中,只需修改sms.xml就可以了,:
<module id="sms" version="1.0.0">
<service-point id="smssender" interface="think.sms.SmsService">
<invoke-factory>
<construct class="TestService">
</construct>
</invoke-factory>
</service-point>
</module>
红色部分表示OA在发送短信是将调用TestService实现。
- 1OA系统可以让用户自行选择是否采用并行会签
- 2OA系统办公管理系统的辅助功能介绍
- 3福建建筑工程审批进度管理软件
- 4福建工程管理软件口碑好
- 5福建省建设工程资料管理软件
- 6协同OA软件内外协同一举打通“信息孤岛”
- 7XX集团OA项目需求问卷调查
- 8福建建筑工程oa建设管理软件
- 9福建安装工程管理软件质量保障
- 10福建水利工程资料管理软件
- 11厦门oa系统
- 12福建工程管理软件
- 13福建建材工程管理软件口碑好
- 14关于学习泛普OA办公系统的家庭作业.
- 15厦门oa办公系统
- 16福建工程财务管理软件
- 17福建工程建设项目管理软件
- 18厦门泛普OA软件权限整理三(人力资源)
- 19协同办公管理系统的文档接口使用说明
- 20福建建材工程管理软件
- 21协同办公管理系统公文的归档与查询
- 22福建工程建设项目进度管理软件
- 23福建工程档案管理软件
- 24福建建筑工程oa管理软件
- 25泛普OA软件电子公章、红头文件及打印的管理
- 26协同管理平台母子流程互动实现方案
- 27协同OA对套流程的表单数据可以自动转移
- 28福建精装工程管理软件
- 29福建工程监理管理软件
- 30协同OA办公系统的短信接口实现过程