日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【腾讯通服务器的消息集成解决方案】之与勤哲Excel服务器的集成

發(fā)布時(shí)間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【腾讯通服务器的消息集成解决方案】之与勤哲Excel服务器的集成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本著懶人的原則,提供最簡單的解決方案!Let's go~~(文中采用的RTX版本為3.61,ES版本為7.1.7)

方案思路:

1.首先做一張數(shù)據(jù)表來存儲(chǔ)消息隊(duì)列,并利用RTX的SDK寫一個(gè)程序來每隔一段時(shí)間從該表中取出消息隊(duì)列發(fā)送出去;

2.然后為ES的ESSys數(shù)據(jù)庫里面存儲(chǔ)待辦工作流信息的數(shù)據(jù)表寫一個(gè)觸發(fā)器,讓它有新增數(shù)據(jù)的時(shí)候自動(dòng)往1樓的表里面寫入消息隊(duì)列。

設(shè)計(jì)方案:

1.首先要解決RTX帳號和ES帳號的映射問題。很簡單,在RTX和ES里面新建用戶的時(shí)候,帳號不都是可以手工定義的嘛,就統(tǒng)一用員工工號唄~

如果兩個(gè)系統(tǒng)都已經(jīng)有帳號了,而且還是不統(tǒng)一的,那就改ES里面的帳號吧,把它向RTX統(tǒng)一。(推薦做法

如果覺得更改ES的帳號對用戶影響太大,還要另發(fā)通知,那就不改帳號,把手機(jī)或電子郵件改成RTX帳號吧~~(懶人嘛)

2.接下來做消息隊(duì)列的數(shù)據(jù)表,為了配置權(quán)限簡單,就單獨(dú)建一個(gè)數(shù)據(jù)庫<RTX>吧,然后在數(shù)據(jù)庫中建一個(gè)數(shù)據(jù)表<MSG_Queue>,數(shù)據(jù)字典如下:

列名數(shù)據(jù)類型長度允許空默認(rèn)值說明
MsgIDbigint8  主鍵。自動(dòng)編號。
DelayTime?
smallint20消息框在桌面停留時(shí)間(秒),默認(rèn)為手動(dòng)關(guān)閉。
Receivervarchar20  接收者,用戶名稱或號碼。
MsgInfovarchar500  消息提醒內(nèi)容。
Titlevarchar10 消息提醒標(biāo)題。(建議5個(gè)漢字的寬度以內(nèi))
AssTypetinyint10保留。
Typetinyint10消息提醒類別。0:普通消息,1:緊急消息。
SendModetinyint10發(fā)送模式。0:普通模式,1:發(fā)送給所有人。

?

再創(chuàng)建一個(gè)獨(dú)立的SQL帳號RTX,密碼也是RTX,配置權(quán)限為可以讀寫數(shù)據(jù)表<MSG_Queue>,這個(gè)帳號用來在RTX接口程序中使用。

3. 開始寫RTX接口程序。我用記事本寫的VBS腳本,懶得配置軟件開發(fā)環(huán)境,也不用編譯,修改起來簡單,充分體現(xiàn)開源精神!(懶人嘛)

不羅嗦,直接貼代碼,有問題請教SDK~

SendNotify.vbs
?1'********************************************************************
?2'Author:?碟子?http://cancelpj.cnblogs.com/
?3'Date:?2008-02-17
?4'Detail:?定時(shí)從數(shù)據(jù)庫取得消息隊(duì)列,并調(diào)用RTX接口發(fā)送即時(shí)消息提醒。
?5'********************************************************************
?6
?7'循環(huán)周期(分鐘)
?8Const?CycleTime?=?1
?9'日志文件
10Const?LogFile?=?"RTX_Notify.log"
11'追加寫入模式
12Const?ForAppending?=?8
13
14Dim?RTXObj,?RTXParams
15Dim?RTXResult
16Dim?objFSO,?objLogFile
17Dim?cnSrc,?rst
18
19Set?RTXObj?=??CreateObject("rtxserver.rtxobj")
20Set?RTXParams?=?CreateObject("rtxserver.collection")
21RTXObj.Name?=?"SYSTOOLS"
22
23Set?objFSO?=?CreateObject("Scripting.FileSystemObject")
24set?cnSrc?=?CreateObject("ADODB.Connection")
25set?rst?=?CreateObject("ADODB.RecordSet")?
26
27While?1
28????cnSrc.Open?"Provider=sqloledb;server=RTX數(shù)據(jù)庫地址;Uid=rtx;Pwd=rtx;Database=RTX"
29????set?rst?=?cnSrc.Execute?_
30????????("SELECT?MsgID,DelayTime,Receiver,Title,MsgInfo,Type,SendMode?FROM?Msg_Queue")
31
32????Set?objLogFile?=?objFSO.OpenTextFile(LogFile,?ForAppending,?True)
33
34????Do?until?rst.eof
35????????'Wscript.StdOut.WriteLine(rst("now()?&?VBTAB?&?MsgID?:?"?&?rst("MsgID")?&?VBTAB?&?rst("Title")?&?VBTAB?&?rst("MsgInfo"))
36????????RTXParams.Remove?"SENDMODE"
37
38????????'RTXParams.Add?"MSGID",?rst("MsgID")
39????????'RTXParams.Add?"ASSTYPE",?"0"
40????????RTXParams.Add?"DELAYTIME",?rst("DelayTime")*1000
41????????RTXParams.Add?"USERNAME",?rst("Receiver")
42????????RTXParams.Add?"TITLE",?rst("Title")
43????????RTXParams.Add?"MSGINFO",?rst("MsgInfo")
44????????RTXParams.Add?"TYPE",?rst("Type")????'0?-?普通消息;1?-?緊急消息
45
46????????iSendMode?=?0
47????????if?rst("SendMode")?=?1?then
48????????????iSendMode?=?iSendMode?+?&H1????'發(fā)送給所有用戶
49????????end?if
50????????if?iSendMode?>?0?then?
51????????????iSendMode?=?iSendMode?+?&H10????'需要查詢狀態(tài)
52????????????RTXParams.Add?"SENDMODE",?iSendMode
53????????end?if
54???????
55????????On?error?resume?next
56????????RTXResult?=?""
57????????RTXResult?=?RTXobj.Call2(&H2100,?RTXParams)?
58????????if(?err.number?<?0)?then?
59????????????objLogFile.Write?now()?&?VBTAB?&?err.Description
60????????????objLogFile.Write?VBTAB?&?"MsgID?:?"?&?rst("MsgID")?&?VBTAB?&?rst("Title")
61????????????objLogFile.Write?VBTAB?&?rst("MsgInfo")
62????????????objLogFile.Write?VbCrLf
63????????else?
64????????????objLogFile.Write?now()?&?VBTAB?&?"發(fā)送成功"
65????????????objLogFile.Write?VBTAB?&?"MsgID?:?"?&?rst("MsgID")?&?VBTAB?&?rst("Title")
66????????????objLogFile.Write?VBTAB?&?rst("MsgInfo")
67????????????objLogFile.Write?VbCrLf
68????????????
69????????????cnSrc.Execute?"DELETE?FROM?Msg_Queue?WHERE?MsgID="?&?rst("MsgID")
70????????????'rst.Delete
71????????????Wscript.Sleep?10*1000
72????????end?if
73????????
74????????rst.MoveNext
75????Loop
76
77????set?rst?=?Nothing
78????cnSrc.close
79????objLogFile.Close
80????Wscript.Sleep?CycleTime*1000*60
81WEnd

腳本需要在RTX服務(wù)器上運(yùn)行,且SDK Server服務(wù)必須啟動(dòng)。(推薦做法

如果在其它計(jì)算機(jī)上運(yùn)行腳本,需要安裝RTX的SDK,配置SDK安裝目錄下RTXServerAPI.ini中RTX服務(wù)器的IP地址,還要修改RTX SDK Server的IP限制(修改RTX服務(wù)器安裝目錄下 SDKProperty.XML)。

OK,改完了配置就把服務(wù)重啟一下,然后往消息隊(duì)列表隨便寫點(diǎn)什么內(nèi)容,測試一下腳本運(yùn)行是否正常,再歇一會(huì)兒~~

4.開始寫觸發(fā)器。打開查詢分析器,登陸到ES數(shù)據(jù)庫,選中ESSys數(shù)據(jù)庫,然后執(zhí)行以下SQL腳本。

FG_TR_MessageQueue
?1?IF?EXISTS?(SELECT?name?
?2????????FROM???sysobjects?
?3????????WHERE??name?=?N'FG_TR_MessageQueue'?
?4????????AND???????type?=?'TR')
?5?????DROP?TRIGGER?FG_TR_MessageQueue
?6?GO
?7?
?8?CREATE?TRIGGER?FG_TR_MessageQueue
?9?ON?CFWiTodo
10?AFTER?INSERT
11?AS?
12?/***********************************************
13?Author:?碟子?http://cancelpj.cnblogs.com/
14?Date:?2008-02-17
15?Description:?當(dāng)Excel服務(wù)器產(chǎn)生新的工作流待辦事宜時(shí),
16?????將信息發(fā)送到RTX消息隊(duì)列。
17?***********************************************/
18?BEGIN
19?
20?DECLARE???@Receiver???VarChar(20)??
21?DECLARE???@MsgInfo???VarChar(500)??
22???
23?--獲取接收人的RTX號,以及待發(fā)送的消息內(nèi)容。
24?SELECT?@Receiver?=?u.MobilePhone,
25?/**
26?????p.pName+'_'+t.tName?as?[任務(wù)],
27?????case?wi.state1
28?????when?2
29?????????then?isnull(wi.untreadName,wi.creByName)
30?????else?wi.creByName
31?????end?as?[交辦人],
32?????convert(smalldatetime,case?wi.state1
33?????when?2
34?????????then?isnull(wi.UntreadTime,wi.creDate)
35?????else?wi.creDate?
36?????end,120)?as?[交辦時(shí)間],
37?**/
38?????@MsgInfo?=?case?wi.state1
39???????when?1
40???????????then?N'暫存:'
41???????when?2
42???????????then?N'被退回:'
43???????else?''
44???????end?+?'
45?任務(wù):'+
46?????p.pName+'_'+t.tName?+?'
47?交辦人:'+
48?????case?wi.state1
49?????when?2
50?????????then?isnull(wi.untreadName,wi.creByName)
51?????else?wi.creByName
52?????end?+?'
53?交辦時(shí)間:'+
54?????convert(nvarchar,case?wi.state1
55?????when?2
56?????????then?isnull(wi.UntreadTime,wi.creDate)
57?????else?wi.creDate?
58?????end,120)
59?????--?+?wi.wiDesc
60?FROM?CFWorkitems?wi,?CFTasks?t,?CFwiTodo?a,?CFProcesses?p,?Users?u,?Inserted?i?
61?WHERE?u.UserID?=?a.userId?and?wi.wiId?=?a.wiId?--and?wi.tId=t.tId?and?wi.pId=p.pId?
62?????and?t.tType<>3?and?wi.state?=0?and?a.userId?=?i.userId
63?ORDER?BY?(case?wi.state1?when?2?then?isnull(wi.Untreadtime,wi.creDate)?else?wi.creDate?end)?desc?
64?
65?
66?--由于ES本身在存儲(chǔ)表單數(shù)據(jù)的過程中使用了事務(wù),再在觸發(fā)器中操作遠(yuǎn)程數(shù)據(jù)庫就會(huì)引起【嵌套事務(wù)】。
67?--以上是個(gè)人猜測,未經(jīng)證實(shí);以下是針對“無法在此會(huì)話中啟動(dòng)更多的事務(wù)”的解決方法。
68?--用于?SQL?Server?的?Microsoft?OLE?DB?提供程序不支持嵌套事務(wù)。
69?--因此,對于隱性或顯式事務(wù)的內(nèi)部數(shù)據(jù)修改操作和分布式分區(qū)視圖上的數(shù)據(jù)修改操作,
70?--應(yīng)將?XACT_ABORT?設(shè)置為?ON。
71?SET?XACT_ABORT?ON
72?
73?--用觸發(fā)器修改遠(yuǎn)程數(shù)據(jù)的兩種方式。
74?--方式一:較安全,配置較復(fù)雜。
75?--????需要在源數(shù)據(jù)庫服務(wù)器建立一個(gè)指向目標(biāo)服務(wù)器的鏈接服務(wù)器,
76?--????登陸方式保存在鏈接服務(wù)器中,不會(huì)在觸發(fā)器中顯示,比較安全。
77?/**
78?INSERT?INTO?[RTX數(shù)據(jù)庫地址].RTX.dbo.Msg_Queue(Receiver,Title,MsgInfo)?
79?????VALUES(@Receiver,'Excel服務(wù)器消息提醒',@MsgInfo)???
80?**/
81?--方式二:不安全,無需另外配置。
82?INSERT?INTO?OPENDATASOURCE('SQLOLEDB','Data?Source=RTX數(shù)據(jù)庫地址;User?ID=rtx;Password=rtx'
83?????).RTX.dbo.Msg_Queue(Receiver,Title,MsgInfo)?
84?????VALUES(@Receiver,'消息提醒','Excel服務(wù)器消息提醒
85?'+@MsgInfo)???
86?
87?END
88?
89?GO
90?
91?--設(shè)置該觸發(fā)器為最后執(zhí)行
92?EXEC?sp_settriggerorder?'FG_TR_MessageQueue','Last','Insert'

由于我的RTX數(shù)據(jù)庫和ESSys數(shù)據(jù)庫不在同一臺(tái)服務(wù)器上,因此SQL腳本中涉及到用觸發(fā)器修改遠(yuǎn)程數(shù)據(jù)庫的問題,需要對服務(wù)器的MDTC安全選項(xiàng)進(jìn)行配置;如果在同一臺(tái)數(shù)據(jù)庫上那就不需要了,簡單修改一下SQL腳本的相關(guān)代碼就可以。

MSDTC安全選項(xiàng)的配置如果不對,在ES中保存工作流表單時(shí)就會(huì)出現(xiàn)“新事務(wù)不能登錄到指定的事務(wù)管理器中”的錯(cuò)誤。我的配置方式如下圖,安全性低,不推薦模仿,僅供參考。

管理工具—— 組件服務(wù)——我的電腦——屬性

源服務(wù)器(ESSys所在的服務(wù)器)

?

目標(biāo)服務(wù)器(RTX數(shù)據(jù)庫所在服務(wù)器)


如果設(shè)置為“要求對雙方進(jìn)行驗(yàn)證”,那么安全性就有保障了,不過我不知道在這種情況下DTC登陸帳戶應(yīng)該如何設(shè)置,萬望高手賜教!!

?

OK,基本上大功告成了,江湖慣例,上效果圖~


?相關(guān)代碼下載:SendNotify_V1_fix.rar (最近發(fā)現(xiàn)消息不能群發(fā)所有人,原來是SendNotify.vbs中關(guān)于iSendMode的處理參數(shù)寫錯(cuò)了,請重新下載,抱歉抱歉~)

?

PS:老大說我的這個(gè)設(shè)計(jì)架構(gòu)對RTX服務(wù)器的耦合度太高,應(yīng)該讓RTX服務(wù)器對其它應(yīng)用服務(wù)器透明,所有配置只在RTX服務(wù)器這邊完成,其它應(yīng)用服務(wù)器只提供各自的消息隊(duì)列表,我覺得蠻有道理的,不過那樣就不能用腳本來寫程序了,所有應(yīng)用服務(wù)器的后臺(tái)數(shù)據(jù)庫密碼要明文寫在腳本里面太不安全了,過段時(shí)間用其它語言寫一個(gè)像模像樣的程序吧,最好還是運(yùn)行后在桌面右下角有圖標(biāo)的~~

?

拋磚引玉,如果看官從中獲得了一點(diǎn)點(diǎn)啟發(fā),那我就很欣慰了,如果你把我后面想做的事都做了,就把代碼發(fā)我一份吧~~ (懶人嘛)

轉(zhuǎn)載于:https://www.cnblogs.com/cancelpj/archive/2009/02/17/1392425.html

總結(jié)

以上是生活随笔為你收集整理的【腾讯通服务器的消息集成解决方案】之与勤哲Excel服务器的集成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人久久久久久 | 亚洲不卡网 | 韩国伦理片在线看 | 最近的中文字幕在线看视频 | 欧美xx在线 | 日本美女性生活视频 | 一本一道av无码中文字幕 | 国产传媒在线播放 | 中文字幕系列 | 国产精品毛片va一区二区三区 | 麻豆精品久久久久久久99蜜桃 | 日韩性大片 | 野外一级片 | 久久精品99国产 | 国产精品久久久久久久一区二区 | 中文字幕日韩人妻在线视频 | 91精品福利视频 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 成人在线观看91 | 国产愉拍 | 亚洲在线免费观看视频 | 伊人成人久久 | 国内毛片毛片毛片毛片毛片 | 超碰一区二区三区 | 色天天天 | 男女啪啪国产 | 日本大胆人体视频 | 久久婷综合 | 一级伦理片 | 国产精品视频免费观看 | 成人春色影视 | 成人黄色一级 | 手机免费av片 | 一区二区免费在线播放 | 久久蜜臀精品av | 欧美日韩视频 | 亚洲色图丝袜美腿 | 五月婷婷丁香 | 黄色片久久久 | 国产农村妇女精品一区二区 | 九九热最新视频 | 无法忍受在线观看 | 国内自拍真实伦在线观看 | 麻豆视频免费在线观看 | 国产爽爽视频 | 91伊人| 玖玖综合网 | 国产手机在线播放 | 久久动态图| 国产精品国产三级国产在线观看 | 夜夜嗨国产 | 欧洲日韩一区二区三区 | 久久精品66 | 少妇毛片一区二区三区 | 久久福利电影 | 日韩女优中文字幕 | 99re视频这里只有精品 | 久久成人一区 | 天天摸日日摸狠狠添 | 动漫一区二区 | av88av | 久久久久亚洲av片无码下载蜜桃 | 免费在线观看污 | 国产精品一区二区三区免费看 | 一级绝黄| 好吊在线视频 | 中文资源在线观看 | 上原亚衣在线观看 | 色性网站| 成人自拍视频网站 | 中文字幕无码乱码人妻日韩精品 | 日韩中文欧美 | 国产精品高潮呻吟久久 | 成人91免费 | 日韩精品一区二区亚洲av性色 | 国产黄色精品网站 | 午夜操操| 久久久久久九九九九九 | 99自拍| 欧美又粗又深又猛又爽啪啪九色 | 香蕉视频A| 午夜草逼 | 在线成人免费观看 | 国产成人精品电影 | 中文字幕校园春色 | 天堂一二三区 | 国产精品色婷婷 | 88国产精品 | 亚洲综合无码一区二区 | 天堂在线中文字幕 | 久久久网站| 男男车车的车车网站w98免费 | 澳门一级黄色片 | 欧美三级色图 | 欧美性视频一区二区三区 | 特种兵之深入敌后 | 国产码视频 | 一极黄色大片 | 色婷婷综合激情 |