|
1. EAS消息中心主動(dòng)向第三方系統推送消息
使用此功能需要實(shí)現一個(gè)接口MessageWebServiceDao 接口全路徑:com.kingdee.eas.base.message.webservice.MessageWebServiceDao 接口類(lèi)所在包名:bs_message-server.jar 1.1. 接口方法說(shuō)明
public boolean addMessage(WSMessage message) 用于在第三方系統中添加消息,其中參數message包含一些消息的信息,這個(gè)方法在消息中心獲得新的消息的時(shí)候會(huì )主動(dòng)調用。 public boolean removeMessage(String ID) 用于EAS消息中心主動(dòng)刪除第三方系統相應的消息記錄,參數ID是WSMessage中的MsgID字段的值,這個(gè)方法是在消息中心刪除消息的時(shí)候會(huì )調用。 public boolean updateMessage(String ID) 與消息中心消息狀態(tài)同步接口,參數ID是WSMessage中的MsgID字段的值。這個(gè)接口是現實(shí)的是當鼠標點(diǎn)擊在某條消息上時(shí)改變消息狀態(tài)的情況下被調用。 public boolean updateMessages(String IDs, MsgStatus state) 與消息中心消息狀態(tài)同步接口,參數IDs是多條消息的MsgID的值的集合,state是要設置消息的狀態(tài)值,這個(gè)接口是在界面上按下“設置消息已讀”或“未讀”按鈕時(shí)被調用。 1.2. 配置文件說(shuō)明 eas\server\deploy\portalconfig\easWebConfig.xml文件中有如下的配置項 <configitem name="otherSystem"> <!--是否啟用與第三方系統消息集成--> <attribute key="toSys" value="true" /> <attribute key="letGet" value="true"/> </configitem> 配置項的value值是“true”,啟用功能。 eas\ server\deploy\portalconfig\WSConfig.xml文件中配置信息。 <?xml version="1.0" encoding="utf-8"?> <config> <class> //EAS portal消息中心的url <server>http://ip:port/easportal?toPage=SYS_PC</server> //數據中心編碼 <dataCenter>db540</dataCenter> //實(shí)現類(lèi)的包名加類(lèi)名 <path>com.kingdee.eas.base.message.webservice.testWebServiceImpl</path> //任務(wù)類(lèi)型消息是否接受 <task value="true"> //任務(wù)類(lèi)型消息節點(diǎn)下的工作流消息是否接受 <workflow>true</workflow> </task> //通知類(lèi)型消息是否接受 <notice value="true"> //通知類(lèi)型消息節點(diǎn)下的工作流消息是否接受 <workflow>true</workflow> //通知類(lèi)型消息節點(diǎn)下的預警消息是否接受 <forwarn>true</forwarn> //通知類(lèi)型消息節點(diǎn)下的催辦消息是否接受 <urgent>true</urgent> </notice> //即時(shí)消息是否接受 <online value="true"></online> </class> </config> 配置文件需要注意的是每個(gè)節點(diǎn)都需要配置,格式要求比較嚴格,所以要按照示例格式配置,若有多個(gè)第三方系統集成,則配置多個(gè)class樹(shù)即可。 A、<server>節點(diǎn)中的值是對應的EAS消息中心的URL,客戶(hù)那邊只能展現消息,具體的業(yè)務(wù)邏輯處理還是在EAS的消息中心,如果需要單點(diǎn)登陸,需要在URL串后面加上相應的單點(diǎn)登錄信息。
B、<path>節點(diǎn)的值是客戶(hù)實(shí)現類(lèi)的“包名+類(lèi)名”,EAS消息中心將用反射機制來(lái)調用這個(gè)類(lèi)。將這個(gè)類(lèi)打包后放在sp目錄下。
task 、notice、online等節點(diǎn)下的值都為true,來(lái)啟用相應的任務(wù)、通知、即時(shí)消息的發(fā)送,如果為false則相應類(lèi)型消息將不會(huì )被發(fā)送出去。<dataCenter>節點(diǎn)值需要配置為當前使用的數據中心編碼,如果不匹配也不會(huì )發(fā)送消息,修改配置文件后需要重啟服務(wù)器才能起作用。
1.3. WSMessage 字段說(shuō)明 //消息ID private String msgID; //消息標題 private String title; //消息內容 private String body; //優(yōu)先級 private MsgPriority priority; //發(fā)送時(shí)間 private Timestamp sendTime; //接受時(shí)間 private Timestamp receiveTime; //源業(yè)務(wù)對象ID private String sourceID; //接收者名字 private String receivers; //消息狀態(tài) private MsgStatus state; //消息類(lèi)型 private MsgType type; //業(yè)務(wù)類(lèi)型 private MsgBizType bizType; //發(fā)送者名字 private String sender; //EAS portal消息中心的url private String url; //接收人ID private String recieverID; //組織ID private String OrgID; 這里WSMessage消息類(lèi)對消息中心中的存在的消息類(lèi)新做了統一的轉型處理,在實(shí)現類(lèi)中接收到的WSMessage對象中獲得的字段中存在是空值的情況,需要開(kāi)發(fā)人員自行控制。
1.4. 調用示例 public class testWebServiceImpl implements MessageWebServiceDao { public boolean addMessage(WSMessage message) { public boolean removeMessage(String ID) { public boolean updateMessage(String ID) { public boolean updateMessages(String ids, MsgStatus state) {
System.out.println( "----------------updateMessages------------" ); System.out.println(ids); System.out.println( "----------------updateMessages------------" ); return false; } } 最后將寫(xiě)好的類(lèi)編譯,將編譯后的class文件打成jar包,注意不要和原來(lái)EAS系統中的jar包重名。打完jar包以后,將jar包放置在eas\server\lib\sp\目錄下。如果是websphere應用服務(wù)器的話(huà),需要重新通過(guò)管理控制臺進(jìn)行一次部署。 2. 第三方系統向EAS消息中心來(lái)推送消息
這個(gè)功能需要使用EAS消息中心提供的webservice接口。 首先獲取EAS消息中心的webservice接口的WSDL文件,啟動(dòng)Apusic,用瀏覽器訪(fǎng)問(wèn)http://ip:port/ormrpc/services獲取WSWsMessageCenterFacade的WSDL文件, 還需要EASLogin這個(gè)服務(wù)(因為首先需要登錄EAS,才能訪(fǎng)問(wèn)到元數據)。所以在EASLogin和WSWsMessageCenterFacade服務(wù)邊上的(wsdl)位置上點(diǎn)右鍵“另存為”,將得到的文件的后綴名改為wsdl。然后根據wsdl文件生成webservice的客戶(hù)端代碼。 2.1. WSWsMessageCenterFacade服務(wù)提供的接口的功能 addMessage 外部系統往EAS推消息時(shí),在EAS消息中心添加消息記錄 參數說(shuō)明: userID String 接收者的用戶(hù)賬號 title String 消息的標題 senderID String 發(fā)送者的用戶(hù)賬號 priority int 消息優(yōu)先級 0低 ; 10中;20高 status int 消息狀態(tài) 0 未讀;10已讀 body String 消息內容 sourceID String 外部系統的數據ID type String 消息類(lèi)型 bizType String 消息業(yè)務(wù)類(lèi)型 url String 雙擊消息進(jìn)行URL的轉跳功能時(shí)將使用到這個(gè)URL sysSign String 第三方系統標識 recieveTime String 接收時(shí)間 updateMessageStatus 同步消息狀態(tài)(已讀、未讀)
參數說(shuō)明: msgSourceID String 消息源ID 消息在第三方系統中的ID state int 狀態(tài)0 未讀;10已讀 removeMsgBySID 刪除EAS中的消息記錄
參數說(shuō)明: sourceID String 外部系統的數據ID 2.2. 二次開(kāi)發(fā)注意事項 addMessage接口中涉及到的用戶(hù)名指的是EAS系統中的用戶(hù)名,sourceID字段保存的是該消息在第三方系統中對應的ID標識,用來(lái)和第三方系統中的數據同步時(shí)使用,確保該字段的數據唯一性。 addMessage接口中的sysSign字段是對多個(gè)第三方系統的消息進(jìn)行來(lái)區分的標識,需要和EAS中的第三方消息節點(diǎn)的配置進(jìn)行配合來(lái)進(jìn)行,節點(diǎn)的配置方法見(jiàn)文檔附錄。 在每次調用EAS的webservice的接口的時(shí)候,先要調用EAS的登陸服務(wù),否則將無(wú)法使用EAS系統的元數據。調用方法如下:首先,先要對EASLogin這個(gè)服務(wù)的wsdl文件生成客戶(hù)端代碼。然后,寫(xiě)如下類(lèi)似代碼進(jìn)行調用 2.3. 代碼示例 這里login的方法中的參數依次是“登陸的用戶(hù)名”,“密碼”,“解決方案”(一般為eas即可),“數據帳套編碼”,“語(yǔ)言類(lèi)型”,“數據庫類(lèi)型”( 0 :MS SQL Server 1:DB2 2:Oracle) public static void login() throws ServiceException, RemoteException { public static void main(String[] args) {
try { WSWsMessageCenterFacadeSrvProxy client = getClient(); login(); //這里先調用了登錄服務(wù) getClient().addMessage( "linda" , "gggggg" , "popo" ,0,0, "123456" , "111111" , "" , "" , "" ); } 3. 第三方系統從EAS消息中心取消息 此功能也需要調用EAS的webservice的接口,所以前面很大一部分的客戶(hù)端代碼生成和怎么來(lái)調用接口的問(wèn)題就不再贅述了。這里就簡(jiǎn)單介紹一下這部分功能的接口。(wsdl文件和第一部分是相同的) 3.1. checkMessageCount checkMessageCount:查詢(xún)新消息記錄條數 在第三方系統主動(dòng)取EAS系統消息時(shí)查詢(xún)可獲取的消息條數(這個(gè)數目是用戶(hù)之間隔離的) 參數說(shuō)明: userID String 用戶(hù)名 用法:在每次取數之前調用該方法,返回為0的話(huà)說(shuō)明該用戶(hù)沒(méi)有需要更新的數據,就沒(méi)有必要再去取數 3.2. clearMessageCount
clearMessageCount:消息可獲取數清0 在第三方系統主動(dòng)取EAS系統消息時(shí)將可獲取的消息條數清零 參數說(shuō)明: userID String 用戶(hù)名 用法:在每次取數之后調用該方法,清空待更新消息的數據。 3.3. removeMsgByID removeMsgByID:根據EAS消息ID刪除消息 第三方系統取EAS消息時(shí),同步刪除EAS消息中心的 參數說(shuō)明:messageID String 消息ID 用法:在第三方系統中將消息刪除以后,需要調用該方法,來(lái)保持數據的一致性。同時(shí)要求第三方系統要保存EAS系統消息的ID 3.4. getMessageList
getMessageList:獲得消息列表 獲取全部待更新的消息 參數說(shuō)明: userID String 用戶(hù)名 用法:返回的是一個(gè)XML字符串流,格式如下 3.5. 消息流
<?xml version=\"1.0\" encoding=\"GBK\" ?> <ROWSET> //每一條消息取出的時(shí)候就是一個(gè)<ROW>,有多條消息就有多個(gè)row <ROW num=> //數據行數 <ID></ID> // 消息ID(在EAS系統中) <TYPE></TYPE> // 消息類(lèi)型 <BIZTYPE></BIZTYPE> // 消息業(yè)務(wù)類(lèi)型 <PRIORITY></PRIORITY> // 優(yōu)先級 <STATUS></STATUS> // 已讀未讀狀態(tài) <TITLE></TITLE> // 消息標題 <BODY></BODY> // 消息內容 <SENDER></SENDER> // 消息發(fā)送人 <RTIME></RTIME> // 消息接收時(shí)間 </ROW> </ROWSET> 4. EAS消息中心第三方系統消息節點(diǎn)配置方法
4.1. 配置流程 1、用administrator用戶(hù)登錄EAS客戶(hù)端,進(jìn)入消息中心,點(diǎn)擊“編輯”菜單,然后點(diǎn)擊“外部消息分類(lèi)維護”菜單項 2、在彈出界面上點(diǎn)擊“新建”按鈕 在此界面中的“外部系統名稱(chēng)”和“外部系統編碼”里面的內容是需要通過(guò)一個(gè)配置文件進(jìn)行配置的,配置文件的路徑是:eas\server\profiles\server1\config\portalConfig\otherSystem.xml 配置文件的和界面顯示數據的關(guān)系看以下圖 界面數據: 4.2. 相關(guān)配置文件 配置文件數據: <config> <system> <systemID>121212</systemID> <systemName>Other</systemName> </system> <system> <systemID>888888</systemID> <systemName>mySystem</systemName> </system> <system> <systemID>454654</systemID> <systemName>OtherSys</systemName> </system> <system> <systemID>841202</systemID> <systemName>OA</systemName> </system> </config> 這里配置以后的節點(diǎn)是和第三方的系統之間隔離的,所以每個(gè)節點(diǎn)下面的數據是來(lái)自同一個(gè)外部系統的數據。 |
聯(lián)系客服
微信登錄中...
請勿關(guān)閉此頁(yè)面
