監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉
OA系統(tǒng)二次開發(fā)

當前位置:工程項目OA系統(tǒng) > 泛普服務體系 > OA系統(tǒng)二次開發(fā)

協(xié)同OA軟件通用短信接口實現(xiàn)方式及使用說明

申請免費試用、咨詢電話:400-8352-114

泛普OA系統(tǒng)通用短信接口實現(xiàn)方式及使用說明


 
泛普oa協(xié)同辦公平臺通用短信接口實現(xiàn)方式及使用說明
 
考慮到目前短信設備供應商多如牛毛,我們不可能和每個供應商做集成開發(fā),因此設計了這個短信通用接口。
接口的原理很簡單,就是泛普OA系統(tǒng)只負責把需要發(fā)送的短信數(shù)據(jù)放到中間表里,由短信設備供應商或客戶自己把中間表里的數(shù)據(jù)發(fā)送出去。實際上大多數(shù)短信設備供應商已經(jīng)實現(xiàn)了通過中間表方式發(fā)送短信。
接口對中間表的存放的位置、中間表名及字段名沒有要求,因為往中間表插入數(shù)據(jù)的sql是在配置文件中指定的,但是有兩點要注意
1. 必須使用sql server或oracle數(shù)據(jù)庫,其他的數(shù)據(jù)庫暫時不支持。
2. 必須有用于存放短信內容、短信接受人的字段。
 
泛普OA辦公系統(tǒng)使用說明:
在理解了上面的原理之后,我們可以繼續(xù)了解配置使用接口的方法。
1. 找到泛普OA系統(tǒng)/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系統(tǒng)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"/>: 指定中間表所在數(shù)據(jù)庫的類型,如果是oracle的話就改為value="oracle"
<set property="host" value="192.168.0.204"/>: 指定中間表所在數(shù)據(jù)庫服務器的ip
<set property="port" value="1433"/>: 指定中間表所在數(shù)據(jù)庫的端口,如果是oracle的話應改為1521
<set property="dbname" value="泛普OA系統(tǒng)3802"/>: 指定中間表所在數(shù)據(jù)庫名
<set property="username" value="sa"/>: 指定中間表所在數(shù)據(jù)庫帳號
<set property="password" value="123"/>:指定中間表所在數(shù)據(jù)庫密碼
以上的配置和OA.properties中的參數(shù)差不多,應該不難理解。
<set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>: 指定往中間表插入數(shù)據(jù)使用的sql語句。例子中的這條sql是我給一個客戶寫的,客戶提供的中間表結構是:
表名:OutBox
字段:ReceiverMobileNo, ----------------接受人
Msg, ----------------短信內容
SendTime, -----------------發(fā)送時間
IsChinese, -----------------是否中文
ExpressLevel, -----------------緊急程度
Sender ----------------發(fā)送人
 
實際上我們只需要用到接受人和短信內容兩個字段,這兩個字段的值不是固定的,由我們的接口負責把數(shù)據(jù)傳過來,因此用?號表示他們的值。其他字段的值我們不關心,可以隨便寫死一些數(shù)據(jù),這個例子里我全部寫的1,發(fā)送時間是用sql server自帶的函數(shù)getDate()獲取的。
 
我們可以這樣理解泛普辦公OA系統(tǒng),最簡單的中間表可以是這樣子的:
表名:someTable
字段:MobileNo,
messageBody
2. 修改泛普OA系統(tǒng)/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參數(shù)是用來指定當前短信發(fā)送設備的)
 
下面我提供兩個建中間表的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系統(tǒng)40002"/>
<set property="password" value="泛普OA系統(tǒng)"/>
<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協(xié)同實際上使用中間表來和短信供應商集成只是我們通用接口的一部分,這種實現(xiàn)方式的缺點是短信供應商通常以定時掃描中間表的方式來把短信數(shù)據(jù)發(fā)送出去,短信發(fā)送的時間取決于掃描的頻度,實時性稍差。
如果客戶不喜歡中間表的方式,他還可以選擇自己去實現(xiàn)發(fā)送短信的方法,當然,必須使用java編程語言。當他把自己寫的發(fā)送方法部署到系統(tǒng)中之后,泛普OA系統(tǒng)在發(fā)送短信的時候就會調用客戶的實現(xiàn)。部署的方法也很簡單,復雜的是只有java程序員才看的懂,具體操作起來可以向泛普開發(fā)人員咨詢:
1. 編寫客戶自己的實現(xiàn)。只需要實現(xiàn)我們提供的SMSService接口:
public interface SmsService {
public boolean sendSMS(String smsId,String number,String msg);
}
 
假定客戶是這樣實現(xiàn)的:
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系統(tǒng)系統(tǒng)在發(fā)送短信時將會調用TestService中的sendSMS方法。
2. 把客戶的實現(xiàn)部署到泛普OA系統(tǒng)中。修改sms.xml就可以了,我還是用上面的客戶實現(xiàn)為例:
<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系統(tǒng)在發(fā)送短信是將調用TestService實現(xiàn)。
 
發(fā)布:2006-04-24 15:20    編輯:泛普軟件 · admin    [打印此頁]    [關閉]
相關文章:

泛普OA系統(tǒng)二次開發(fā)其他應用

泛普OA商務合同 泛普OA需求調研 泛普OA實施方案 泛普OA項目啟動 泛普網(wǎng)絡硬件配置 泛普OA部署安裝 泛普流程模板表單 OA系統(tǒng)二次開發(fā) 泛普常見問題解決 泛普OA操作手冊 泛普軟件項目驗收 泛普培訓推廣上線 泛普OA售后服務 泛普新聞 泛普期刊 泛普博客