协同OA软件通用短信接口实现方式及使用说明
泛普oa协同办公平台通用短信接口实现方式及使用说明
考虑到目前短信设备供应商多如牛毛,我们不可能和每个供应商做集成开发,因此设计了这个短信通用接口。
接口的原理很简单,就是泛普OA系统只负责把需要发送的短信数据放到中间表里,由短信设备供应商或客户自己把中间表里的数据发送出去。实际上大多数短信设备供应商已经实现了通过中间表方式发送短信。
接口对中间表的存放的位置、中间表名及字段名没有要求,因为往中间表插入数据的sql是在配置文件中指定的,但是有两点要注意
1. 必须使用sql server或oracle数据库,其他的数据库暂时不支持。
2. 必须有用于存放短信内容、短信接受人的字段。
泛普OA办公系统使用说明:
在理解了上面的原理之后,我们可以继续了解配置使用接口的方法。
1. 找到泛普OA系统/WEB-INF/service/sms.xml,打开这个文件,里面的内容如下:
<module id="sms" version="1.0.0">
<service-point id="smssender" interface="OA.sms.SmsService">
<invoke-factory>
<construct class="OA.sms.JdbcSmsService">
<set property="type" value="sqlserver"/>
<set property="host" value="192.168.0.204"/>
<set property="port" value="1433"/>
<set property="dbname" value="泛普OA系统3802"/>
<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="泛普OA系统3802"/>: 指定中间表所在数据库名
<set property="username" value="sa"/>: 指定中间表所在数据库帐号
<set property="password" value="123"/>:指定中间表所在数据库密码
以上的配置和OA.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 ----------------发送人
实际上我们只需要用到接受人和短信内容两个字段,这两个字段的值不是固定的,由我们的接口负责把数据传过来,因此用?号表示他们的值。其他字段的值我们不关心,可以随便写死一些数据,这个例子里我全部写的1,发送时间是用sql server自带的函数getDate()获取的。
我们可以这样理解泛普办公OA系统,最简单的中间表可以是这样子的:
表名:someTable
字段:MobileNo,
messageBody
2. 修改泛普OA系统/WEB-INF/prop/OA_rtx.properties中的内容为:
#config file
#Fri Aug 13 11:30:56 CST 2004
IsInitRTXOrg=true
IsDownLineNotify=true
#CurSmsServer=rtx
CurSmsServerIsValid=true
RTXServerPort=8036
RTXServerIP=
RTXServerOutIP=
也就是说只要把CurSmsServer=rtx用#号注释掉就可以了。(相信大家都清楚CurSmsServer参数是用来指定当前短信发送设备的)
下面我提供两个建中间表的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="OA.sms.SmsService">
<invoke-factory>
<construct class="OA.sms.JdbcSmsService">
<set property="type" value="oracle"/>
<set property="host" value="192.168.0.204"/>
<set property="port" value="1521"/>
<set property="dbname" value="OA1"/>
<set property="username" value="泛普OA系统40002"/>
<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>
泛普OA协同实际上使用中间表来和短信供应商集成只是我们通用接口的一部分,这种实现方式的缺点是短信供应商通常以定时扫描中间表的方式来把短信数据发送出去,短信发送的时间取决于扫描的频度,实时性稍差。
如果客户不喜欢中间表的方式,他还可以选择自己去实现发送短信的方法,当然,必须使用java编程语言。当他把自己写的发送方法部署到系统中之后,泛普OA系统在发送短信的时候就会调用客户的实现。部署的方法也很简单,复杂的是只有java程序员才看的懂,具体操作起来可以向泛普开发人员咨询:
1. 编写客户自己的实现。只需要实现我们提供的SMSService接口:
public interface SmsService {
public boolean sendSMS(String smsId,String number,String msg);
}
假定客户是这样实现的:
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方法。
2. 把客户的实现部署到泛普OA系统中。修改sms.xml就可以了,我还是用上面的客户实现为例:
<module id="sms" version="1.0.0">
<service-point id="smssender" interface="OA.sms.SmsService">
<invoke-factory>
<construct class="TestService">
</construct>
</invoke-factory>
</service-point>
</module>
红色部分表示泛普OA系统在发送短信是将调用TestService实现。
- 1协同办公OA软件的数据库查询和处理语句
- 2OA单点继承登陆设置:查看二次开发文档
- 3协同OA软件按流程限制用户可选择的预算科目
- 4泛普协同管理平台与SAP集成方案
- 5OA办公自动化提供应用级二次开发功能与手段
- 6OA软件目管理软件任务的行插入
- 7XX建设公司协同管理软件流程二次开发
- 8泛普协同OA办公底层包开发指南
- 9OA办公系统开发资产模块开发
- 10泛普OA一个JSP页面,一个JAVA程序的基本组成,如何阅读JSP页面
- 11XX集团OA软件需求
- 12协同OA管理应用方案---出勤管理
- 13二次开发OA系统需从系统中同步人员信息
- 14OA软件系统二次开发培训文档,你值得一看
- 15协同OA办公系统的二次开发经验总结
- 16什么OA软件在功能比较好?泛普OA连JSP式样编写指南都开放了,你说好不好
- 17OA在归档节点可手动子流程与会议冲突提醒开发
- 18地产行业OA协同软件定制开发需求及实施方案
- 19什么是OA系统的二次开发功能呢?
- 20XX客户协同OA软件预算流程修改操作手册
- 21OA办公系统CRM销售管理信息系统定制需求分析
- 22协同OA系统的预算三级科目和费用明细关联
- 23泛普OA系统在企业的预算控制科目开关开发功能
- 24要做OA办公系统,找哪家系统开发公司比较好?泛普超专业二次开发方案
- 25公司OA系统的业务查询页面修改需求如下:
- 26协同OA软件对流程,文档数据的存放说明
- 27协同管理平台与SAP集成方案
- 28OA办公系统评测与对比,那个OA办公系统好?泛普OA平台分页控件又专业又好用
- 29泛普OA协同办公系统的二次开发服务范围
- 30泛普OA系统新增新的权限控制新功能的查看