資源管理方法、客戶端及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種資源管理方法、客戶端及系統(tǒng),涉及通信領(lǐng)域。為解決現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題而發(fā)明。技術(shù)方案包括:用戶需要使用資源管理服務(wù)時(shí),通過(guò)移動(dòng)終端的客戶端接收資源管理信息;所述移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息;所述終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息;所述資源管理服務(wù)器通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息;所述終端服務(wù)器通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息;所述客戶端根據(jù)所述響應(yīng)信息進(jìn)行更新。該技術(shù)方案可以應(yīng)用在手機(jī)等移動(dòng)終端上。
【專利說(shuō)明】資源管理方法、客戶端及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種資源管理方法、客戶端及系統(tǒng)。
【背景技術(shù)】
[0002]在當(dāng)前社會(huì)中,大多數(shù)員工都待在辦公室工作。員工在辦公室時(shí),可以使用電腦實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作。但是,當(dāng)用戶出差或外出工作等特殊情況不能使用電腦時(shí),將無(wú)法實(shí)現(xiàn)上述操作,不便于用戶使用。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的實(shí)施例提供一種資源管理方法、客戶端及系統(tǒng),能夠隨時(shí)實(shí)現(xiàn)溝通或工作情況匯報(bào)等操作。
[0004]一方面,提供一種資源管理方法,包括:用戶需要使用資源管理服務(wù)時(shí),通過(guò)移動(dòng)終端的客戶端接收資源管理信息;所述移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息;所述終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息;所述資源管理服務(wù)器通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息;所述終端服務(wù)器通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息;所述客戶端根據(jù)所述響應(yīng)信息進(jìn)行更新。
[0005]另一方面,提供一種資源管理裝置,包括:
信息接收模塊,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息;
訪問(wèn)模塊,用于通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息,使所述終端服務(wù)器從資源管理服務(wù)器獲取對(duì)應(yīng)的響應(yīng)信息;
響應(yīng)接收模塊,用于接收所述終端服務(wù)器通過(guò)消息推送的響應(yīng)信息;
更新模塊,用于根據(jù)所述響應(yīng)信息進(jìn)行更新。
[0006]再一方面,提供一種資源管理系統(tǒng),包括:
資源管理客戶端,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息;根據(jù)響應(yīng)信息進(jìn)行更新;
所述終端服務(wù)器,用于接收所述客戶端發(fā)送的所述資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息;通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息;
所述資源管理服務(wù)器,用于通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息。
[0007]本發(fā)明實(shí)施例提供的資源管理方法、客戶端及系統(tǒng),可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題?!緦@綀D】
【附圖說(shuō)明】
[0008]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0009]圖1為本發(fā)明實(shí)施例一提供的資源管理方法的流程圖;
圖2為本發(fā)明實(shí)施例一提供的資源管理示意圖;
圖3為本發(fā)明實(shí)施例二提供的資源管理方法的流程圖;
圖4為本發(fā)明實(shí)施例三提供的資源管理方法的流程圖;
圖5為本發(fā)明實(shí)施例四提供的資源管理方法的流程圖;
圖6為本發(fā)明實(shí)施例五提供的資源管理方法的流程圖;
圖7為本發(fā)明實(shí)施例六提供的資源管理方法的流程圖;
圖8為本發(fā)明實(shí)施例七提供的資源管理方法的流程圖;
圖9為本發(fā)明實(shí)施例八提供的資源管理客戶端的結(jié)構(gòu)示意圖一;
圖10為本發(fā)明實(shí)施例八提供的資源管理客戶端的結(jié)構(gòu)示意圖二 ;
圖11為本發(fā)明實(shí)施例八提供的資源管理客戶端的結(jié)構(gòu)示意圖三;
圖12為本發(fā)明實(shí)施例八提供的資源管理客戶端的結(jié)構(gòu)示意圖四;
圖13為本發(fā)明實(shí)施例八提供的資源管理客戶端的結(jié)構(gòu)示意圖五;
圖14為本發(fā)明實(shí)施例九提供的資源管理系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0010]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0011]本發(fā)明提供一種資源管理方法、客戶端及系統(tǒng),能夠解決現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0012]實(shí)施例一:
如圖1所示,本發(fā)明實(shí)施例提供一種資源管理方法,包括:
步驟101,用戶需要使用資源管理服務(wù)時(shí),通過(guò)移動(dòng)終端的客戶端接收資源管理信息。
[0013]在本實(shí)施例中,用戶使用的資源管理服務(wù),可以為發(fā)送消息,獲取聯(lián)系人列表,獲取緩存的消息數(shù)據(jù),獲取任務(wù)相關(guān)的信息,獲取日程相關(guān)的信息,獲取活動(dòng)相關(guān)的信息,獲取組織架構(gòu)相關(guān)的信息,日歷服務(wù)等,在此不再一一贅述。
[0014]步驟102,移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向該終端服務(wù)器發(fā)送資源管理信息。
[0015]在本實(shí)施例中,終端服務(wù)器可以采用WCF服務(wù),在終端服務(wù)器的部署方面,可以分為兩種:通過(guò)Internet Information Services (互聯(lián)網(wǎng)信息服務(wù),IIS)加載、與資源管理服務(wù)器提供的服務(wù)集成。其中,通過(guò)IIS加載可以實(shí)現(xiàn)終端服務(wù)器與資源管理服務(wù)器在不同的服務(wù)器上部署;與資源管理服務(wù)器提供的服務(wù)集成,可以實(shí)現(xiàn)加載服務(wù)后終端服務(wù)器與資源管理服務(wù)器共享同一塊內(nèi)存區(qū)域。
[0016]步驟103,終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向該資源管理服務(wù)器發(fā)送該資源管理信息。
[0017]步驟104,該資源管理服務(wù)器通過(guò)WCF回調(diào)向終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息。
[0018]在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)MessagePusher服務(wù)提供用戶消息通道的注冊(cè),發(fā)送消息,獲取消息聯(lián)系人列表,獲取固定消息聯(lián)系人列表,獲取某任務(wù)相關(guān)的聯(lián)系人列表,獲取所有任務(wù)的聯(lián)系人列表,獲取某員工的所有任務(wù),獲取某任務(wù)的所有參與人員,群發(fā)消息和獲取緩存的消息數(shù)據(jù)等服務(wù)。其中,可以通過(guò)互聯(lián)網(wǎng)至服務(wù)器進(jìn)行注冊(cè),當(dāng)用戶注銷時(shí),為避免通道的閑置,不利于有效資源的分配,可以進(jìn)行消息通道的注銷操作;可通過(guò)事件中心進(jìn)行消息的發(fā)送,該消息類型包括:系統(tǒng)消息、用戶登陸成功消息、一般提醒消息、日程提醒消息、聊天消息、大數(shù)據(jù)量聊天消息提醒、多人會(huì)議消息、系統(tǒng)數(shù)據(jù)消息變化提醒、多人會(huì)議開始消息提醒、議題開始和結(jié)束消息提醒、多人會(huì)議人員變化提醒(主執(zhí)行人結(jié)束某員工參加此會(huì)議)、多人會(huì)議參與者增加消息提醒和多人會(huì)議參與人員狀態(tài)變化消息。
[0019]在本實(shí)施例中,資源管理服務(wù)器通過(guò)MessagePusher服務(wù)提供上述服務(wù)的過(guò)程,可以包括:首先調(diào)用資源管理服務(wù)器的相關(guān)方法,然后進(jìn)行數(shù)據(jù)實(shí)體轉(zhuǎn)化后供移動(dòng)終端使用。其中聯(lián)系人實(shí)體可以包括一般聯(lián)系人和任務(wù)聯(lián)系人;本實(shí)施例中可以封裝三個(gè)實(shí)體包括 BaseContacter、OrdinaryContacter 和 TaskContacter ;其中,BaseContacter 為基類,OrdinaryContacter 繼承 BaseContacter 表不一般聯(lián)系人,TaskContacter 繼承OrdinaryContacter表示任務(wù)聯(lián)系人,上述實(shí)體的屬性如下:
OrdinaryContacter 屬性為:KeyID 聯(lián)系人 ID 值
DisplayName聯(lián)系人姓名
Sex聯(lián)系人性別`
CustomerState聯(lián)系人當(dāng)前的狀態(tài),分為:離線、在線、免打
擾、休息中
TaskContacter: OrdinaryContacter
附加屬性為=TaskObject任務(wù)的ID值和任務(wù)名稱
ISinThisTask此任務(wù)是否正在執(zhí)行
TaskRole任務(wù)參與者的角色
Role任務(wù)的角色,此屬性為方便排序的判斷而設(shè),只在
服務(wù)端使用,客戶端不使用。
[0020]在本實(shí)施例中,MessagePusher服務(wù)的封裝方法包括:MethodResultRegistClient(long loginID, string strUri) ;MethodResu11〈I ong>SendMessage(MessageBody msgData, List〈long> sendto) ;MethodResult〈long〉SendSimpleMessage (string msgData, string sendto);MethodResult<IList<0rdinaryContacter>> GetAlIContacters () ;MethodResult<IList<OrdinaryContacter>>GetContactersByIDs(List〈long> idList);MethodResult〈IList〈TaskContacter>>GetTaskContacters(long taskID);MethodResult〈IList〈TaskContacter>> GetAllTaskContacters();MethodResult<IList<BaseObject>> GetAllTask(long customerID);MethodResult〈IList〈TaskParticipator>> GetParticipators(long taskID);MethodResultSendtMultiAgendaMessage(MessageBody msgData, List〈long> sendto, longobjecID) ;MethodResult<string> GetCacheLargeMsg(long senderID)。上述封裝中,基本消息類型為MessageBody,可以將消息封裝成一個(gè)“盒子”,每個(gè)消息均以這個(gè)“盒子”為基礎(chǔ),并在此基礎(chǔ)上實(shí)現(xiàn)擴(kuò)展,該“盒子”實(shí)體為MessageContainer,內(nèi)容包括:消息的基本內(nèi)容實(shí)體、發(fā)送者、接收者集合、消息的⑶ID唯一標(biāo)識(shí)。該實(shí)體提供了重載的構(gòu)造函數(shù),可以方便不同的實(shí)例化。為了保證消息內(nèi)容大數(shù)據(jù)量的發(fā)送,可以在數(shù)據(jù)量超過(guò)預(yù)設(shè)字符數(shù)如200時(shí),首先將消息保存到內(nèi)存中后再發(fā)送至相應(yīng)的客戶端,使客戶端接收到消息后主動(dòng)調(diào)用手機(jī)服務(wù)的方法取回消息內(nèi)容。
[0021]在本實(shí)施例中,MessageBody擴(kuò)展的消息類型可以包括:消息提醒的內(nèi)容、類型,枚舉值如任務(wù)、日程、活動(dòng)、系統(tǒng)或聊天消息,狀態(tài)如任務(wù)的開始和結(jié)束,枚舉類型值如開始、結(jié)束和未知,提醒的時(shí)間。其中,日程消息提醒可分為單人日程和多人日程,可以通過(guò)AgendaType屬性區(qū)分;消息實(shí)體可以為多人會(huì)議,或者系統(tǒng)數(shù)據(jù)發(fā)生變化如用戶的登錄與注銷時(shí)發(fā)送的消息,或者多人會(huì)議變化如新成員加入、未知、開始和結(jié)束等。
[0022]在本實(shí)施例中,可以通過(guò)⑶ID確認(rèn)消息是否發(fā)送成功,即當(dāng)收到客戶端返回的⑶ID驗(yàn)證時(shí),消息發(fā)送成功。在上述“盒子”的基礎(chǔ)上,還可以定義消息SysMessageContainer 和數(shù)據(jù)訪問(wèn)消息 ResponseMsgContainer。
[0023]在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)TaskManager獲取任務(wù)相關(guān)的信息,該過(guò)程主要通過(guò)調(diào)用資源管理服務(wù)器來(lái)實(shí)現(xiàn),最后通過(guò)實(shí)體轉(zhuǎn)化以適用終端數(shù)據(jù)實(shí)體的需要。此時(shí),封裝的任務(wù)實(shí)體包括:
askBaseData (任務(wù)基本實(shí)體)
屬性值為=KeyID任務(wù)的ID值`
DisplayName任務(wù)的名稱ProgresValue任務(wù)的進(jìn)度值CurrentTaskState當(dāng)前任務(wù)的狀態(tài),任務(wù)狀態(tài)分為,制定中、待分配、執(zhí)行中、完成、取消、關(guān)閉
TaskSimpleData 繼承 TaskBaseData (任務(wù)簡(jiǎn)單實(shí)體)
附加屬性值為:BeginTime任務(wù)開始時(shí)間
EndTime任務(wù)結(jié)束時(shí)間
AgendaCount任務(wù)下日程總數(shù)
MilestoneData里程碑字符串
PrincipalTag任務(wù)負(fù)責(zé)人信息,ID值和姓名
ExecutiveTag任務(wù)執(zhí)行人信息,ID值和姓名
ParticipatorCount任務(wù)參與者總?cè)藬?shù)
TaskDetailData繼承TaskSimpleData (任務(wù)詳細(xì)信息實(shí)體)
附加屬性為:0utline任務(wù)概要
CurrentTime當(dāng)前時(shí)間 ReportTaskDetai IData (上報(bào)任務(wù))
屬性值為=KeyID任務(wù)的ID值DisplayName上報(bào)任務(wù)的名稱 Principal上報(bào)任務(wù)負(fù)責(zé)人信息,ID值和姓名 Executor上報(bào)任務(wù)執(zhí)行人信息,ID值和姓名 ReportTaskOutline上報(bào)任務(wù)概要
在本實(shí)施例中,TaskManager可以根據(jù)客戶端傳入的任務(wù)的ID值獲取任務(wù)的詳細(xì)信息,也可以根據(jù)客戶端傳入的員工ID值獲取員工相關(guān)的所有任務(wù)的基礎(chǔ)信息列表,也可以根據(jù)客戶端傳入的任務(wù)的ID值獲取該任務(wù)的父任務(wù)的基礎(chǔ)信息,也可以客戶端傳入的任務(wù)的ID值獲取該任務(wù)的所有子任務(wù)的基礎(chǔ)信息列表,也可以根據(jù)客戶端傳入的任務(wù)的ID值和索引確定任務(wù)基礎(chǔ)信息列表的起始和結(jié)尾的行數(shù),也可以根據(jù)客戶端傳入的員工ID值和每頁(yè)的列表個(gè)數(shù)獲取該員工所有任務(wù)列表的頁(yè)數(shù),也可以根據(jù)消息頭獲取用戶當(dāng)前正在執(zhí)行的任務(wù)的詳細(xì)信息,也可以根據(jù)消息頭設(shè)定用戶當(dāng)前正在執(zhí)行的任務(wù)、此時(shí)系統(tǒng)可提示用戶是否進(jìn)行強(qiáng)制設(shè)定,還可以根據(jù)搜索條件如ID值、任務(wù)名稱、任務(wù)開始時(shí)間與結(jié)束時(shí)間、任務(wù)類型、任務(wù)狀態(tài)和頁(yè)數(shù)搜索等搜索條件獲取任務(wù)的基礎(chǔ)信息列表,還可以創(chuàng)建新的任務(wù)或上報(bào)任務(wù),還可以根據(jù)客戶端傳入的任務(wù)的ID值取消該ID值的任務(wù)等。為了便于搜索條件的擴(kuò)展,上述搜索條件可以單獨(dú)封裝,
在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)AgendaManager獲取日程相關(guān)的信息,上述過(guò)程可以通過(guò)調(diào)用資源管理服務(wù)器實(shí)現(xiàn),最后通過(guò)實(shí)體轉(zhuǎn)化以實(shí)用終端數(shù)據(jù)實(shí)體的需要。此時(shí),封裝的日程實(shí)體包括:
AgendaBaseData (日程基礎(chǔ)實(shí)體)
屬性為=KeyID日程ID值
DisplayName日程名稱
Task日程對(duì)應(yīng)的任務(wù)
Worker日程的執(zhí)行人
BeginTime計(jì)劃開始時(shí)間
Importance日程的重要程度
AgendaType日常類型,分為:單人日常、多人日程
AgendaSimpleData 繼承 AgendaBaseData (日程簡(jiǎn)單實(shí)體)
附加屬性為=WorkHours日程計(jì)劃時(shí)長(zhǎng)Organiger日程發(fā)起人AgendaState日程狀態(tài),制定中、待執(zhí)彳丁、執(zhí)彳丁中、完成、取消、關(guān)閉、待確認(rèn)[表示幫他人制定多人日程的待審核]、已等待[表示協(xié)助人已開始活動(dòng)]
CurrentTime當(dāng)前時(shí)間 EndTime日程計(jì)劃結(jié)束時(shí)間 AgendaDetaiIData 繼承 AgendaSimpleData (日程詳細(xì)信息實(shí)體)
附加屬性為=Outline日程概述 TopicForDiscussionData (多人日程議程實(shí)體)
屬性為=KeyID議程ID
DisplayName議程名稱
BeginTime議程開始時(shí)間WorkHours議程時(shí)長(zhǎng) State議程狀態(tài) ParticipatorInfo (多人日程參與者實(shí)體)
屬性為=KeyID參與者ID
DisplayName參與者姓名 RoleID參與這角色 RoleName角色名稱 MultiuserAgendaData (多人日程實(shí)體)
屬性為=KeyId多人日程ID值
Li st〈TopicForDi scussionData> 議程列表 List<ParticipatorInfo> 參與者列表
在本實(shí)施例中,通過(guò)AgendaManager可以獲取某一用戶做出的所有日程基礎(chǔ)信息列表,也可以獲取與某一用戶相關(guān)的所有日程基礎(chǔ)信息列表,也可以獲取某一用戶某一天的所有日程基礎(chǔ)信息列表,也可以獲取某一用戶某一天所在的一周的所有日程基礎(chǔ)信息列表,也可以獲取某一用戶某一天所在的前后兩周的所有日程基礎(chǔ)信息列表,也可以獲取某一員工在對(duì)某一任務(wù)做出的所有日程基礎(chǔ)信息列表,還可以獲取某一日程的簡(jiǎn)單信息或詳細(xì)信息,還可以創(chuàng)建日程信息,還可以根據(jù)需求設(shè)置當(dāng)前日程、此時(shí)系統(tǒng)可提示用戶是否進(jìn)行強(qiáng)制設(shè)定,還可以獲取某 一用戶或多個(gè)用戶的日程的詳細(xì)信息或活動(dòng)信息。
[0024]在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)ActivityManager獲取活動(dòng)相關(guān)的信息,上述過(guò)程可以通過(guò)調(diào)用資源管理服務(wù)器實(shí)現(xiàn),最后通過(guò)實(shí)體轉(zhuǎn)化以適用終端數(shù)據(jù)實(shí)體的需要。此時(shí),封裝的日程實(shí)體包括:
ActivityBase (活動(dòng)基礎(chǔ)實(shí)體)
屬性為=KeyID活動(dòng)ID值
DisplayName活動(dòng)名稱
ActivityGuid 活動(dòng) GUID 值
TimePoint時(shí)間點(diǎn)
Agenda活動(dòng)關(guān)聯(lián)日程信息
Task活動(dòng)關(guān)聯(lián)任務(wù)信息
Longitude 經(jīng)度
Latitude緯度,經(jīng)緯度用于確定用戶執(zhí)行活動(dòng)時(shí)所處的位置 ActivityItem 繼承 ActivityBase (活動(dòng)項(xiàng)實(shí)體)
附加屬性為:Summary總結(jié)
TempData用戶存放歷史數(shù)據(jù) ActivityStart 繼承 ActivityItem (活動(dòng)開始實(shí)體)
附加屬性為:ActivityType活動(dòng)類型,分為實(shí)時(shí)活動(dòng)、事后活動(dòng)、手機(jī)端活動(dòng)、手機(jī)端事后活動(dòng)
InputResource 資源輸入
Worker活動(dòng)執(zhí)行人
Workplace活動(dòng)的工作地點(diǎn)ParticipateType活動(dòng)的參與類型,分為一人執(zhí)行和多人執(zhí)行 OrganigerID活動(dòng)組織者ID值 ActualIyBeginTime活動(dòng)開始時(shí)間 ActivityFinish 繼承 ActivityItem (活動(dòng)結(jié)束實(shí)體)
附加屬性為:OutputResource資源輸出 WorkHours活動(dòng)總時(shí)長(zhǎng) Satisfaction活動(dòng)的滿意程度 ActualIyEndTime活動(dòng)結(jié)束時(shí)間 ActivityCompelled繼承ActivityItem (強(qiáng)制提交的活動(dòng)的實(shí)體)
附加屬性為:InputResource資源輸入
Worker活動(dòng)執(zhí)行人
Workplace活動(dòng)工作地點(diǎn)
OutputResource 資源輸出
Satisfaction活動(dòng)滿意程度
ActivityState 活動(dòng)狀態(tài)
ParticipationType活動(dòng)參與類型
OrganigerID 組織者 ID
ComplledTime活動(dòng)強(qiáng)制提交時(shí)間
ActivitySuspended 繼承 ActivityItem (暫?;顒?dòng)實(shí)體)
附加屬性為=SuspendedTime活動(dòng)暫停時(shí)間點(diǎn) ActivityContinue繼承ActivityItem (暫?;顒?dòng)繼續(xù)進(jìn)行實(shí)體)
附加屬性為:ContinueTime繼續(xù)的時(shí)間點(diǎn)` ActivityAfterwards 繼承 ActivityItem (事后活動(dòng))` 附加屬性為:InputResource資源輸入
Worker執(zhí)行人
Workplace工作地點(diǎn)
ActualIyBeginTime活動(dòng)開始時(shí)間
ActualIyEndTime活動(dòng)結(jié)束時(shí)間
FullActivity繼承ActivityBase (活動(dòng)完整時(shí)間排序列表)
附加屬性為:LinkedList〈ActivityItem> m—Activities將一個(gè)整的活動(dòng)拆分開來(lái),活動(dòng)的開始、活動(dòng)的暫停、活動(dòng)的繼續(xù)、活動(dòng)的強(qiáng)制提交、活動(dòng)的結(jié)束。他們之間由GUID來(lái)確定屬于同一個(gè)活動(dòng),LinkedList<ActivityItem>將他們按時(shí)間前后順序進(jìn)行排列,存入內(nèi)存中
ActivityDetailData (活動(dòng)的詳細(xì)信息)
屬性為:KeyID活動(dòng)ID
DisplayName活動(dòng)名稱
Task活動(dòng)關(guān)聯(lián)任務(wù)
Agenda活動(dòng)關(guān)聯(lián)日程
Summary活動(dòng)的概述BeginTime活動(dòng)開始時(shí)間EndTime活動(dòng)結(jié)束時(shí)間在本實(shí)施例中,通過(guò)ActivityManager可以根據(jù)任務(wù)ID和日程ID獲取該日程的所有活動(dòng),并轉(zhuǎn)化為移動(dòng)終端活動(dòng)的列表顯示;也可以獲取活動(dòng)的詳細(xì)信息,也可以獲取某一用戶當(dāng)天的所有活動(dòng)列表,也可以提交活動(dòng)數(shù)據(jù),還可以獲取某一用戶執(zhí)行的某一任務(wù)下的所有活動(dòng)列表,還可以繼續(xù)執(zhí)行暫停的活動(dòng),還可以獲取某一用戶所有暫停的活動(dòng)列表,還可以獲取某一任務(wù)下的所有暫停的活動(dòng)列表或者所有的活動(dòng)列表。
[0025]在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)CalendarManager服務(wù)記錄用戶當(dāng)天的任務(wù)數(shù)、日程數(shù)、活動(dòng)數(shù),還可以根據(jù)當(dāng)月的任務(wù)總數(shù)、日程總數(shù)和活動(dòng)總數(shù)判斷當(dāng)天的繁忙程度。CalendarManager服務(wù)封裝的實(shí)體可以包括:MonthCalendar和DayCalendar。具體屬性如下:
DayCalendar: BusyDegree 當(dāng)天的繁忙度
AgendaAmount當(dāng)天的日程總數(shù)
ActivityAmount當(dāng)天的活動(dòng)總數(shù)
MonthCalendar:CurrentDate 當(dāng)前時(shí)間的年月
TaskSum本月的任務(wù)總數(shù)
AgendaSum本月的日程總數(shù)
ActivitySum本月的活動(dòng)總數(shù)
Dictionary<int, DayCalendar>本月的每天的日程的集合在本實(shí)施例中,資源管理服務(wù)器可以通過(guò)OrganizationManager獲取組織架構(gòu)相關(guān)的信息,上述過(guò)程可以通過(guò)調(diào)用資源管理服務(wù)器實(shí)現(xiàn),最后通過(guò)實(shí)體轉(zhuǎn)化以實(shí)用終端數(shù)據(jù)實(shí)體的需要。此時(shí),封裝的日程實(shí)體包括:
OrganizationData (組`織實(shí)體)
屬性為=KeyID組織ID
DisplayName組織名稱 ParentOrgId父組織名稱 List<OrganizationData> 子組織集合 OrganEmployeeData (部門員工實(shí)體)
屬性為:KeyID員工ID
DisplayName員工姓名
PositionName職位名稱
IsMyLower是否是某員工的下級(jí)
CurrentState員工當(dāng)前狀態(tài)
CurrentTask員工當(dāng)前任務(wù)
CurrentAgenda員工當(dāng)前日程
CurrentActivity員工當(dāng)前正在從事的活動(dòng)
AllOrganEmployeeData 繼承 OrganEmployeeData (員工詳細(xì)信息)
附加屬性為=Department部門實(shí)體,包括部門的ID值和部門的名稱 CompanyDepartmentData (公司部門實(shí)體)屬性為=KeyID公司部門ID值
DisplayName公司部門名稱 ParentDepartmentID 父部門 ID 值 CompanyStaffData (公司員工實(shí)體)
屬性為=KeyId ID值
DisplayName 姓名 CurrentState當(dāng)前的狀態(tài) StaffPosition當(dāng)前的位置 DepartmentID所屬部門 CompanyStaffStateData (公司員工狀態(tài)實(shí)體)
屬性為=KeyID Id值
DisplayName員工姓名CurrentState當(dāng)前的登錄狀態(tài)CurrentTask當(dāng)前正在執(zhí)行的任務(wù)CurrentAgenda當(dāng)前正在執(zhí)行的日程CurrentActivity當(dāng)前正在執(zhí)行的活動(dòng)在本實(shí)施例中,通過(guò)OrganizationManager可以獲取組織架構(gòu);也可以根據(jù)部門的ID值獲取該部門的所有員工列表;也可以獲取員工視圖,該員工視圖既可以只呈現(xiàn)組織架構(gòu)信息,也可以呈現(xiàn)上報(bào)的任務(wù)列表信息;還可以獲取公司的所有的員工信息;還可以獲取公司的所有部門信息;還可以根據(jù)部門ID獲取該部門的所有員工信息;還可以根據(jù)指示查看用戶的狀態(tài)。
[0026]步驟105,終端服務(wù)器通過(guò)消息推送向客戶端發(fā)送響應(yīng)信息。
[0027]在本實(shí)施例中,為實(shí)現(xiàn)消息推送,消息推送的基類可以為PushNotificationMessage,以及封裝的三種推送方式可以包括 RawPushNotificationMessage> ToastPushNotificationMessage 和TilePushNotif icationMessage。其中,基類 PushNotificationMessage 為抽象類,可禁止用戶對(duì)其進(jìn)行實(shí)例化,并同時(shí)允許子類對(duì)其進(jìn)行抽象方法的覆蓋。
[0028]在本實(shí)施例中,可以在基類中定義消息推送的最大消息量的常量值,包括消息頭和消息的荷載量。其中,消息頭可以包括以下常量:MessageId、BatchingInterval、NotificationStatus、 DeviceConnectionStatus、 SubscriptionStatus 和WindowsPhoneTarget ;上述常量的值分別設(shè)為 〃X-MessageID〃、〃X_NotificationClass"、〃X_NotificationStatus〃、 〃X_DeviceConnectionStatus〃、 〃X_SubscriptionStatus〃 和〃X-WindowsPhone_Target〃 ;通過(guò)上述消息值包括的常量的值可以區(qū)別不同的消息請(qǐng)求。
[0029]在本實(shí)施例中,還可以在基類中定義三個(gè)字段,分別為_sync、_payload和_SendPriority0其中,_sync為私有的只讀object對(duì)象,代表同步承載控制;_payload為私有的byte數(shù)組,代表消息字節(jié)的內(nèi)容;_sendPriority為私有的MessageSendPriority枚舉類型,代表消息發(fā)送的優(yōu)先級(jí);該MessageSendPriority包括的三個(gè)值分別為High、Normal、Low ;當(dāng) MessageSendPriority 的值為 High 時(shí),消息應(yīng)立刻推送;當(dāng)MessageSendPriority的值為Normal時(shí),消息應(yīng)在預(yù)設(shè)短期時(shí)間(如450s)內(nèi)推送;當(dāng)MessageSendPriority的值為L(zhǎng)ow時(shí),消息應(yīng)在預(yù)設(shè)長(zhǎng)期時(shí)間(如900s)內(nèi)推送。
[0030]在本實(shí)施例中,還可以在基類中定義五個(gè)屬性,包括Id、SendPriority λPayload、NotificationClassId 和 IsDirty0 其中,Id 為只讀 GUID 類型,為消息 P隹一性的ID值;SendPriority為發(fā)送消息的優(yōu)先級(jí),在進(jìn)行設(shè)置時(shí),需要首先進(jìn)行安全設(shè)置的認(rèn)證;Payload為承載的字節(jié)內(nèi)容,在進(jìn)行設(shè)置時(shí)也需要進(jìn)行安全設(shè)置的認(rèn)證;NotificationClassId 為抽象的只讀的 Notification 類的 ID 值;IsDirty 為 bool 類型的值,表示當(dāng)消息的屬性發(fā)生變化時(shí),承載的內(nèi)容將發(fā)生重建的標(biāo)志值。
[0031]綜上,基類的構(gòu)造函數(shù)可以為protected PushNotif icationMessage (MessageSendPriority sendPriority = MessageSendPriority.Normal) {Id = Guid.NewGuidO ;SendPriority = sendPriority;IsDirty = true;},在該構(gòu)造函數(shù)中可以設(shè)定消息的發(fā)送級(jí)別為Normal。其中,protected類型的方法主要是定義了SafeSet〈T>,用于驗(yàn)證值是否與之前的值相同;該protected類型中可以共定義4個(gè)私有的方法,包括:private MessageSendResult SendSynchronously(byte[] payload,Uri uri,HttpWebRequest request)、private void SendAsynchronously (byte []payload, Uri uri, HttpWebRequest request, Action〈MessageSendResult> sent,Action<MessageSendResult> error)、private byte 口 GetOrCreatePayload ()、privateHttpWebRequest CreateWebRequest (Uri uri, byte 口 payload),分別表不同步發(fā)送消息到目標(biāo)地址、用HttpWebRequest方法異步發(fā)送消息至目標(biāo)地址、創(chuàng)建消息承載并驗(yàn)證它的大小和創(chuàng)建HTTPWebRequest。
[0032]在本實(shí)施例中,基類中可以封裝兩個(gè)公有方法,包括:同步發(fā)送消息和異步發(fā)送消息。該基類中重載了消息承載的方法和初始化消息請(qǐng)求的用戶自定義消息頭的方法,并定義了驗(yàn)證消息承載內(nèi)容是否越界的抽象方法。
[0033]在本實(shí)施例中,類RawPushNotificationMessage〈T>代表一種Raw消息推送的方式;該類中定義了兩個(gè)常量RawMessageHeadersSize和MaxPayloadSize ;其中,RawMessageHeadersSize為私有的,并初始化值為116,表示計(jì)算Raw消息頭的大?。籑axPayloadSize為公有的常量,初始化值為MaxMessageSize - RawMessageHeadersSize,代表Raw消息推送的最大承載量。該類的屬性包括兩個(gè)public T RawData { get; set;HBprotected override int NotificationClassId{get { return 3; }},分別代表獲取或者設(shè)置Raw消息的字節(jié)大小,以及Raw消息推送的類的ID。該類重載基類的方法,包括創(chuàng)建消息承載和驗(yàn)證消息承載字節(jié)內(nèi)容,使消息通過(guò)流的形式序列化,以便之后的發(fā)送操作。
[0034]綜上,類的構(gòu)造函數(shù)為public RawPushNotif icationMessage (MessageSendPriority sendPriority = MessageSendPriority.Normal):base (sendPriority) { },在該構(gòu)造函數(shù)中可以設(shè)定消息的發(fā)送級(jí)別為Normal。
[0035]在本實(shí)施例中,類TilePushNotificationMessage 代表了 一種標(biāo)題消息推送的方式。該類中定義了 5個(gè)常量,包括:private const intTileMessageHeadersSize = 146;public const int MaxPayloadSize = MaxMessageSize-TiIeMessageHeadersSize;public const int MinCount = 0 jpublic const intMaxCount = 99; private const string WindowsPhoneTarget = "token";上述常量分別代表計(jì)算標(biāo)題頭的大小、標(biāo)題消息推送的最大承載量、消息數(shù)量最小值、消息數(shù)量最大值、目標(biāo)WindowsPhone字符串標(biāo)志。該類中可以定義三個(gè)字段,包括:private Uri _backgroundlmageUri ; private int _count = MinCount; private string _title;上述字段分別代表背景圖片在移動(dòng)終端的地址路徑或者一個(gè)代理路徑、一個(gè)顯示在標(biāo)題上的整數(shù)型的值、標(biāo)題內(nèi)容字符串。該類中可以定義4個(gè)屬性值,包括!BackgroundlmageUr1、Count、Title、NotificationClassId ;上述屬性值分別為 Uri 類型,獲取—backgroundlmageUri值,設(shè)置時(shí)需進(jìn)行安全認(rèn)證、int類型,獲取—count值,設(shè)置時(shí)需進(jìn)行安全認(rèn)證、string類型,獲取—title值,設(shè)置時(shí)需進(jìn)行安全認(rèn)證、返回消息發(fā)送類的ID值為I。該類中覆寫了三個(gè)積累的方法,包括!protected override byte口 OnCreatePayloadO、protectedoverride void OnInitializeRequest(System.Net.HttpWebRequest request)'protectedoverride void VerifyPayloadSize (byte [] payload)。在 OnCreatePayload 中,寫入流時(shí)利用XmlWriter寫入以下標(biāo)記,
writer.WriteStartElement(〃wp〃,"Notification",〃WPNotification〃);
writer.WriteStartElement(〃wp〃,〃Tile〃,〃WPNotification〃);
writer.WriteStartElement(〃wp〃,〃BackgroundImage〃,"WPNotification");
writer.WriteStartElement(〃wp〃,〃Count〃,〃WPNotification〃);
writer.WriteStartElement(〃wp〃,〃Title〃,"WPNotification")。
[0036]綜上,類TilePushNotificationMessage 的構(gòu)造函數(shù)可以為:public TilePushNotificationMessage(MessageSendPriority sendPriority = MessageSendPriority.Normal): base (sendPriority) {},在該構(gòu)造函數(shù)中可以設(shè)定消息的發(fā)送級(jí)別為Normal。
[0037]在本實(shí)施例中,類ToastPushNotificationMessage代表一種Toast方式的消息發(fā)送。該類中定義的變量分別包括:private const int ToastMessageHeadersSize=146jpublic const int MaxPayloadSize = MaxMessageSize -ToastMessageHeadersSize;private const string WindowsPhoneTarget = 〃toast〃;上述變量分別代表Toast消息頭的大小、Toast消息的最大承載量、目標(biāo)移動(dòng)終端的字符串。該類中定義了兩個(gè)私有的字`符串字段,包括title和—subTitle ;上述字符串分別代表在應(yīng)用程序標(biāo)志圖標(biāo)之后顯示的粗體字符串標(biāo)題、標(biāo)題后面顯示的非粗體的標(biāo)題。該類中定義了三個(gè)屬性,包括:public string Title、public string SubTitle、protectedoverride int NotificationClassId ;上述屬性分別代表獲取主標(biāo)題、設(shè)置時(shí)需進(jìn)行安全認(rèn)證、獲取副標(biāo)題,設(shè)置時(shí)需要進(jìn)行安全認(rèn)證、返回消息類的ID值為2。該類中覆寫了三個(gè)方法,包括 -protected override byte 口 OnCreatePayload O、protected overridevoid OnInitializeRequest (HttpWebRequest request)、protected override voidVerifyPayloadSize (byte [] payload)。在 OnCreatePayload 中,寫入流時(shí),利用 XmlWriter寫入以下的標(biāo)記:
writer.WriteStartElement(〃wp〃,"Notification",〃WPNotification〃);
writer.WriteStartElement(〃wp〃,〃Toast〃,〃WPNotification〃);
writer.WriteStartElement(〃wp〃,〃Textl〃,"WPNotification");
writer.WriteValue(Title);
writer.WriteStartElement(〃wp〃,〃Text2〃,"WPNotification")。
[0038]綜上,類的構(gòu)造函數(shù)可以為public ToastPushNotificationMessage (MessageSen(!Priority sendPriority = MessageSendPriority.Normal): base (sendPriority) {},在該構(gòu)造函數(shù)中可以設(shè)定消息的發(fā)送級(jí)別為Normal。
[0039]步驟106,客戶端根據(jù)響應(yīng)信息進(jìn)行更新。
[0040]在本實(shí)施例中,終端服務(wù)器和資源管理服務(wù)器可以均采用WCF服務(wù),資源管理服務(wù)器可以采用serverhost部署;終端服務(wù)器可以通過(guò)IIS加載,與資源管理服務(wù)器集成。通過(guò)上述方式可以實(shí)現(xiàn)終端服務(wù)器和資源管理服務(wù)器在不同的服務(wù)器上部署;并在加載服務(wù)后,終端服務(wù)器與資源管理服務(wù)器共享同一塊內(nèi)存區(qū)域。
[0041]本實(shí)施例提供的資源管理方法,為減少工作中的沖突,分成客戶端和服務(wù)器兩個(gè)部分,該服務(wù)器包括終端服務(wù)器和資源管理服務(wù)器;移動(dòng)終端、終端服務(wù)器和資源管理服務(wù)器的交互如圖2所示。其中,客戶端主要集中各界面的繪制、空間的封裝;服務(wù)器集中了各種邏輯功能。由于各種邏輯功能全部集中于服務(wù)器,使得客戶端只需調(diào)用服務(wù)完成邏輯功能操作,因而當(dāng)用戶終端移動(dòng)終端發(fā)送變化時(shí),可以不對(duì)服務(wù)器進(jìn)行修改,只需修改客戶端,便于功能的一致和調(diào)用,提高了服務(wù)器的重用性。
[0042]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0043]實(shí)施例二:
如圖3所示,本發(fā)明實(shí)施例 提供的資源管理方法,該方法與圖1所示的相似,區(qū)別在于,本實(shí)施例提供的資源管理方法還包括:
步驟107,終端服務(wù)器根據(jù)心跳機(jī)制向客戶端發(fā)送提醒信息。
[0044]在本實(shí)施例中,步驟107可以在用戶通過(guò)移動(dòng)終端的客戶端接收資源管理信息前向客戶端發(fā)送提醒信息;也可以在用戶通過(guò)移動(dòng)終端的客戶端接收資源管理信息后、客戶端進(jìn)行更新前向客戶端發(fā)送提醒信息;還可以在客戶端進(jìn)行更新后向客戶端發(fā)送提醒信息,在此不作限制。該步驟107中心跳機(jī)制為間隔固定時(shí)間后,系統(tǒng)自動(dòng)啟動(dòng)線程執(zhí)行預(yù)定的操作;該心跳機(jī)制可以在服務(wù)啟動(dòng)時(shí)開啟,在服務(wù)關(guān)閉或異常時(shí)停止。
[0045]在本實(shí)施例中,可以定義具有自動(dòng)釋放特性的不可繼承類HeartBeat,該類中的屬性包括:心跳線程private Thread m_MainThread,設(shè)置心跳是否停止private bool m_Stoped = false,設(shè)置間隔的時(shí)間段public TimeSpan Interval。在構(gòu)造函數(shù)中,用戶傳入Interval設(shè)置心跳間隔,同時(shí)啟動(dòng)線程MainThread,觸發(fā)心跳事件。
[0046]在本實(shí)施例中,終端服務(wù)器可以由消息推送機(jī)制、心跳機(jī)制、事件中心、自動(dòng)化提醒、任務(wù)日程活動(dòng)內(nèi)存管理和用戶狀態(tài)內(nèi)存管理組成。其中,事件中心為核心,心跳機(jī)制、消息推送機(jī)制響應(yīng)事件中心后執(zhí)行;任務(wù)日程活動(dòng)內(nèi)存管理、用戶狀態(tài)內(nèi)存管理和自動(dòng)化提醒均通過(guò)事件實(shí)現(xiàn)與事件中心的傳遞;消息推送機(jī)制是終端服務(wù)器通過(guò)消息通道推送消息至移動(dòng)終端的客戶端,方便終端服務(wù)器與客戶端的主動(dòng)通訊,無(wú)需客戶端被動(dòng)調(diào)用;心跳機(jī)制為每個(gè)固定時(shí)間,啟動(dòng)一個(gè)線程(如啟動(dòng)自動(dòng)化提醒功能線程),當(dāng)需要間隔固定時(shí)間啟動(dòng)某個(gè)功能時(shí),可使用此機(jī)制,從而無(wú)需一直開啟某個(gè)線程,利于節(jié)約內(nèi)存資源;事件中心是封裝事件的觸發(fā)與注冊(cè),利用繼承事件執(zhí)行順序來(lái)優(yōu)化功能層次的設(shè)計(jì);自動(dòng)化提醒是利用心跳機(jī)制,間隔固定時(shí)間啟動(dòng)相關(guān)線程,經(jīng)過(guò)終端服務(wù)器邏輯運(yùn)算后,通過(guò)消息通道將消息提醒信息推送至客戶端,通過(guò)消息通道推送的消息提醒信息可以為相關(guān)任務(wù)、日程或活動(dòng)等的提醒;任務(wù)日程活動(dòng)內(nèi)存管理是在內(nèi)存管理中,以任務(wù)為核心,所有的日程和活動(dòng)都是以任務(wù)展開的(如用戶新增一個(gè)任務(wù)時(shí),內(nèi)存將發(fā)生變化),服務(wù)啟動(dòng)時(shí),將所有正在執(zhí)行的任務(wù)導(dǎo)入內(nèi)存中,并將正在執(zhí)行的日程與相應(yīng)的任務(wù)關(guān)聯(lián),內(nèi)存中只保存在線用戶所進(jìn)行的活動(dòng),并且活動(dòng)一定是在確定了當(dāng)前任務(wù)的情況下進(jìn)行的,即手機(jī)服務(wù)中屏蔽了游離活動(dòng)的情況,用戶離線后,內(nèi)存中將清理此用戶的活動(dòng)記錄;用戶狀態(tài)內(nèi)存管理是內(nèi)存中保存用戶在線狀態(tài)、用戶代理維護(hù)、用戶當(dāng)前正在執(zhí)行的任務(wù)、用戶當(dāng)前正在執(zhí)行的日程、用戶當(dāng)前正在執(zhí)行的活動(dòng),當(dāng)用戶上線和下線、切換當(dāng)前的任務(wù)、切換當(dāng)前的日程、執(zhí)行不同的活動(dòng)時(shí),內(nèi)存中保存的用戶狀態(tài)都將發(fā)生相應(yīng)的變化,同時(shí)數(shù)據(jù)庫(kù)中的信息也將更新,這樣可以快速獲取用戶當(dāng)前的狀態(tài),無(wú)須從數(shù)據(jù)庫(kù)中獲取并進(jìn)行相應(yīng)的分析,大大提高了獲取用戶狀態(tài)的速度和狀態(tài)準(zhǔn)確性。
[0047]在本實(shí)施例中,將任務(wù)比作一個(gè)房間為例進(jìn)行說(shuō)明,移動(dòng)終端服務(wù)啟動(dòng)時(shí)首先初始化多個(gè)房間,用戶想從事某項(xiàng)活動(dòng)時(shí),首先需要選擇一個(gè)房間(即選擇執(zhí)行一個(gè)任務(wù));日程為房間內(nèi)桌子上放的計(jì)劃,用戶進(jìn)入房間后可以按照計(jì)劃也可以不按照計(jì)劃從事活動(dòng);當(dāng)中途需從事另一項(xiàng)活動(dòng)時(shí)可能與當(dāng)前執(zhí)行的活動(dòng)屬于同一個(gè)任務(wù),也可能不屬于同一任務(wù);當(dāng)不屬于同一任務(wù)時(shí),用戶需在暫停正在執(zhí)行的活動(dòng)后,走出當(dāng)前房間,進(jìn)入目標(biāo)房間(即切換了當(dāng)前的任務(wù))后再執(zhí)行另一項(xiàng)活動(dòng);這樣維護(hù)了任務(wù)日程活動(dòng)的關(guān)系及狀態(tài),當(dāng)需要獲取相關(guān)信息時(shí),無(wú)須從數(shù)據(jù)庫(kù)中獲取,而可以直接從內(nèi)存中取得,提高了獲取的速度。
[0048]在本實(shí)施例中,事件中心為全局事件,事件的注冊(cè)方法為add { EventContext.1nstance.m_EventHandlerList.AddHandler(typeof(T), value); }將事件加入到EventHandlerList 的列表中,以方便逐層觸發(fā)。remove { EventContext.1nstance.m_EventHandlerList.RemoveHandler (typeof (T), value) ; }將事件從EventHandlerList 的列表中刪除,以注銷某事件。該事件可為多級(jí)事件,使事件觸發(fā)時(shí)可逐層觸發(fā)。
[0049]在本實(shí)施例中,內(nèi)存管理可以包括:用戶狀態(tài)的管理、任務(wù)日程活動(dòng)的內(nèi)存管理和代理的內(nèi)存管理。類ProxyCreater用于用戶代理的創(chuàng)建,該類中可以定義如下對(duì)象:private readonly static object m_PropertyObject = new object ();private readonlyDictionary<string, object> m_Servers = new Dictionary<string, object> ();private readonly IProxyCreaterOwner m_0wner;上述對(duì)象分別表不用戶鎖、用于存放代理的集合。其中,IProxyCreaterOwner為接口定義如下:為核心服務(wù)的回調(diào)對(duì)象objectKernelCallback { get; }和表不 WCF 消息頭集合的 IDictionary〈string, object〉WCFMessageHeader { get; }。
[0050]在本實(shí)施例中,類需要重載三個(gè)構(gòu)造函數(shù)的方法,包括:static ProxyCreater O:設(shè)置 ProxyConnectionPool.EnableConnectionPool = false; private ProxyCreater O {}:表不不允許此對(duì)象無(wú)參數(shù)傳遞的實(shí)例化。internal ProxyCreater (IProxyCreaterOwnerowner):表示此類綁定IProxyCreaterOwner接口對(duì)象。該類中主要公布的方法包括:public IKernelServer GetKernelInstance O , public T GetServerInstance<T>() whereT: class;上述方法分別表示獲取核心服務(wù)對(duì)象和獲取T服務(wù)對(duì)象。其中,創(chuàng)建核心服務(wù)對(duì)象時(shí)可以使用動(dòng)態(tài)代理創(chuàng)建。[0051]在本實(shí)施例中,類SystemMemoryState 繼承了接口 IProxyCreaterOwner,IcallbackOwner和IDisposable ;用于維護(hù)內(nèi)存系統(tǒng)中所有的代理和用戶的回調(diào)函數(shù)。類 CustomerMemoryState 繼承了接口 IProxyCreaterOwner, IcallbackOwner 和IDisposable ;用于維護(hù)系統(tǒng)中用戶的當(dāng)前狀態(tài),包括當(dāng)前所執(zhí)行的任務(wù)日程活動(dòng)、及歷史活動(dòng)、登陸狀態(tài)、用戶的代理和回調(diào)函數(shù)。類CMSContext用于維護(hù)SystemMemoryState和CustomerMemoryState。類TAAContext為任務(wù)日程活動(dòng)總內(nèi)存對(duì)象,用于初始化系統(tǒng)內(nèi)存中所有的待執(zhí)行與正在執(zhí)行的任務(wù)。類TaskMemoryData為任務(wù)內(nèi)存數(shù)據(jù)對(duì)象,在Task數(shù)據(jù)對(duì)象中,保存所有任務(wù)下的日程信息,在相關(guān)日程信息下保存所有活動(dòng)信息。
[0052]在本實(shí)施例中,任務(wù)對(duì)象實(shí)體為:public long KeyID;public stringDisplayName;public DateTime? BeginTime;public DateTime? EndTime0 上述實(shí)體分別定義為任務(wù)的ID值、任務(wù)的名稱、任務(wù)的開始時(shí)間和任務(wù)的結(jié)束時(shí)間。
[0053]在本實(shí)施例中,日程對(duì)象實(shí)體為:public long KeyID ;public stringDisplayName;public long WorkerID;public long TaskID;public DateTime?BeginTime;public DateTime? EndTime0上述實(shí)體分別定義為日程的ID值、日程的名稱、執(zhí)行日程的員工ID、關(guān)聯(lián)的任務(wù)的ID值、日程的開始時(shí)間和日程的結(jié)束時(shí)間。
[0054]在本實(shí)施例中,活動(dòng)對(duì)象實(shí)體為:public long KeyID;public stringDispIayName;pub Iic string ActivityGuid;public long? TaskID;publi clong? AgendaID;public long ExecutorID;public virtual EnumActivityTypeActivityType;public DateTime TimePoint0上述實(shí)體分別定義為活動(dòng)的ID值、活動(dòng)的名稱、活動(dòng)的GUID值、活動(dòng)對(duì)應(yīng)相關(guān)的任務(wù)ID和活動(dòng)對(duì)應(yīng)相關(guān)的日程ID值。
[0055]在本實(shí)施例中,為了方便內(nèi)存對(duì)象的管理,重新封裝了 List集合和LinkedList集合,繼承IEnumerable〈T>。具體實(shí)現(xiàn)如下:首先定義事件(ListDatasChangedEventArgs<0bjType? ,設(shè)置增加數(shù)據(jù)和刪除數(shù)據(jù)的屬性;抽象類ListDatas〈T>繼承IEnumerabIe〈T>,類中定義兩個(gè)私有對(duì)象分別`為:private readonly List<T> m_datas = new List〈T>()用以存放集合數(shù)據(jù),public event EventHandler<ListDatasChangedEventArgs<T>>DatasChanged;}為數(shù)據(jù)變化(包括增加和刪除)的事件。定義數(shù)據(jù)變化的方法,當(dāng)注冊(cè)事件后,觸發(fā)數(shù)據(jù)變化ListDatasChangedEventArgs事件。定義封裝方法,數(shù)據(jù)增加和數(shù)據(jù)刪除,分別調(diào)用相應(yīng)的onDatasChanged方法。同時(shí)還可以定義其他方法,用于完成自己需要的操作,比如添加數(shù)據(jù)、添加后調(diào)用onDatasAdded方法,以使相應(yīng)位置響應(yīng),進(jìn)行數(shù)據(jù)添加操作邏輯。
[0056]在本實(shí)施例中,在封裝LinkedListDatas〈T>前,首先定義LinkedListDatasChangedType以表示,鏈表的添加和刪除操作;同時(shí)定義鏈表數(shù)據(jù)變化的事件,為 LinkedListDatasChangedEventArgs〈ObjType> 繼承 EventArgs,內(nèi)部數(shù)據(jù)為:public LinkedListDatasChangedType ChangedType { get; private set; }表不變化的類型,public ObjType Data { get; private set; }表示變化的數(shù)據(jù)內(nèi)容。其中,LinkedListDatasCD繼承IEnumerable〈T>,類中定義一個(gè)私有變量和一個(gè)公有變化分別為:private readonly LinkedList〈T> m_datas = new LinkedList〈T> (),用以存放鏈表內(nèi)的數(shù)據(jù) T, public event EventHandler<LinkedListDatasChangedEventArgs<T>>DatasChanged用以表示數(shù)據(jù)變化的數(shù)據(jù)。還可以定義數(shù)據(jù)變化事件的觸發(fā)方法,或者其他的方法以滿足自身的需要,如 public LinkedListNode<T> AddAfter (LinkedListNode<T>node, T value)、public LinkedListNode<T> AddBefore(LinkedListNode<T> node, Tvalue)、public LinkedListNode<T> AddFirst (T value)、public LinkedListNode<T>AddLast (T value),分別表示鏈表的某節(jié)點(diǎn)后添加數(shù)據(jù)、鏈表的某節(jié)點(diǎn)前添加數(shù)據(jù)、在鏈表的開頭添加節(jié)點(diǎn)數(shù)據(jù)、在鏈表的結(jié)尾添加節(jié)點(diǎn)數(shù)據(jù)。
[0057]通過(guò)本實(shí)施例提供的資源管理方法,客戶端可以及時(shí)收到終端服務(wù)器發(fā)出的人性化的提醒信息,以便執(zhí)行相關(guān)必要的操作,如任務(wù)開始、任務(wù)結(jié)束、里程碑的提醒。
[0058]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0059]實(shí)施例三:
如圖4所示,本發(fā)明實(shí)施例一種資源管理方法,包括:
步驟401,通過(guò)移動(dòng)終端的客戶端接收資源管理信息。該步驟與圖1所示的步驟101相似,在此不再一一贅述。
[0060]步驟402,移動(dòng)終端的客戶端采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向終端服務(wù)器發(fā)送資源管理信息。
[0061]步驟403,終端服務(wù)器采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向該資源管理服務(wù)器發(fā)送該資源管理信息。
[0062]在本實(shí)施例中,通過(guò)步驟402和步驟403分別向終端服務(wù)器發(fā)送資源管理信息和向資源管理服務(wù)器發(fā)送資源管理信息`的過(guò)程,與圖1所示的步驟102至步驟103相似,區(qū)別在于,為了防止使用靜態(tài)代理調(diào)用資源管理服務(wù)器時(shí)發(fā)生錯(cuò)誤,導(dǎo)致回調(diào)的資源管理服務(wù)器值發(fā)生變化,使得返回的值不準(zhǔn)確,進(jìn)而導(dǎo)致終端服務(wù)器與資源管理服務(wù)器無(wú)法正常有效地通訊,本實(shí)施例中向終端服務(wù)器發(fā)送資源管理信息和向資源管理服務(wù)器發(fā)送資源管理?目息是通過(guò)動(dòng)態(tài)代理完成的。
[0063]在本實(shí)施例中,動(dòng)態(tài)代理可以分為四個(gè)部分,包括:WCF代理基類的動(dòng)態(tài)轉(zhuǎn)換器、客戶端代理對(duì)象、內(nèi)部封裝的接口和方法、緩沖池。該客戶端代理對(duì)象中包括:IClientBase> WCFReusabIeClientProxy<T>> WCFReusabIeFaultffrapperChannelProxy<T>>WCFReusableFaultWrapperClientProxy〈T>。
[0064]在本實(shí)施例中,IClientBase定義了內(nèi)部代理的隱藏屬性,為可釋放的對(duì)象,包括如下內(nèi)容:event ProxyCreatedHandler ProxyCreated,代表一個(gè)新的代理被創(chuàng)建時(shí)觸發(fā);event ProxyMenthodCallHandler ProxyMethodCalling; ClientCredentials ClientCredentials {get}代表獲取客戶端認(rèn)證來(lái)訪問(wèn)一個(gè)方法;ServiceEndpoint Endpoint {get}代表獲取可連接的WCF服務(wù)的目標(biāo)終結(jié)地址;ServiceEndpoint CurrentEndpoint {get}代表獲取當(dāng)前可連接的WCF服務(wù)的目標(biāo)終結(jié)地址;IClientChannel InnerChannel {get}代表獲取現(xiàn)在正在執(zhí)行的 IClientChannel ;CommunicationState State {get}代表服務(wù)代理對(duì)象當(dāng)前的連接狀態(tài);void Abort ()代表當(dāng)當(dāng)前服務(wù)連接狀態(tài)發(fā)生關(guān)閉時(shí)立刻觸發(fā)的狀態(tài)轉(zhuǎn)變的方法;void CloseO代表當(dāng)前服務(wù)連接狀態(tài)關(guān)閉時(shí)發(fā)生的轉(zhuǎn)換;void Open O代表當(dāng)前服務(wù)連接狀態(tài)開啟時(shí)發(fā)生的轉(zhuǎn)換;ob ject Tag {get; set}代表保存用戶自定義的代理的對(duì)象標(biāo)記;WCFReusableClientProxy<T> 為抽象類,同時(shí)繼承了 IClientBase。
[0065]在本實(shí)施例中,IClientBase中聲明的字段包括:protected T cachedProxy、private readonly string configName、private readonly Binding binding、privatereadonly EndpointAddress remoteAddress、 private readonly InstanceContextcalIbackInstanceλ private OperationContext m_0perationContextΛ protectedvolatile bool manuallyClosed、private static readonly Type _instanceType;上述字段分別表示代理緩沖區(qū)對(duì)象、配置的名稱、綁定對(duì)象、代理地址對(duì)象、回調(diào)常量、代理操作的上下文、人工關(guān)閉的bool值、常量類型對(duì)象。
[0066]在本實(shí)施例中,IClientBase中定義了兩個(gè)屬性分別用于獲取cachedProxy值和configName的值。該IClientBase中定義的方法主要包括!protected voidCloseProxyBecauseOfException() Λ protected void AssureProxy() Λ protected virtualT CreateProxyInstance ();上述方法分別代表當(dāng)出錯(cuò)時(shí)關(guān)閉代理、當(dāng)沒(méi)有代理可用時(shí),倉(cāng)1J
建一個(gè)新的代理、創(chuàng)建代理常量。
[0067]綜上,IClientBase的構(gòu)造函數(shù)分別包括:static WCFReusableClientProxy O、protected WCFReusableClientProxy(string configName)、 protectedWCFReusableClientProxy (Binding binding, EndpointAddress remoteAddress):this (null, binding, remoteAddress)、protected WCFReusableClientProxy(InstanceContext calIbackInstancej Binding binding, EndpointAddress remoteAddress)。
[0068]在本實(shí)施例中,WCFReusabIeFaultWrapperClientProxy<T>為抽象類,繼承了WCFReusabIeClientProxy〈T>。該類中定義了虛方法 HandleFault〈TFaultDetail> 用于處理出錯(cuò)時(shí)引發(fā)的異常。該類的構(gòu)造函數(shù)包括!protected WCFReusableFaultWrapperClientProxy (string configName):base(configName) { } ;protected WCFReusabIeFauItWrapperClientProxy(Binding binding, EndpointAddress remoteAddress): base (binding,remoteAddress){ } ;protected WCFReusabIeFauItWrapperClientProxy(InstanceContext calIbackInstancej Binding binding, EndpointAddress remoteAddress):base (callbacklnstance,binding, remoteAddress){
[0069]在本實(shí)施例中,WCFReusabIeFaultWrapperChannelProxy<T> 類為抽象類,繼承于WCFReusableFaultWrapperClientProxy〈T>。該類中有兩個(gè)私有的字段,包括:private static readonly Dictionary<string, ChanneIFactory<T>> factoryCache=new Dietionary<string, ChanneIFactory<T>>() ;private ChanneIFactory<T>factory;上述字段分別代表頻道工廠類的緩存和頻道工廠類;該類中還可以包括驗(yàn)證工廠類的方法private void AssureFactory O。該類中包括基類的四個(gè)方法,分別為:protected override T CreateProxyInstance ();public override ClientCredentialsClientCredentials;public override ServiceEndpoint CurrentEndpoint;publicoverride ServiceEndpoint Endpoint;public override IClientChannel InnerChannel0該類內(nèi)部封裝的接 口 和方法包括:AbstractClassBuilder〈TInterface>、ITypeBuilderΛProxyBuilder λ WCFProxyClassBui I der〈TInterface>、WCFReusab IeFaultWrapperChanne IProxyClassBuilder〈TInterface>、WCFReusableProxyClassBuilder〈TInterface>。[0070]在本實(shí)施例中,上述ITypeBuilder為接口,內(nèi)部定義了唯一的方法返回Type類型,用于轉(zhuǎn)換類型,該轉(zhuǎn)換類型為Type GenerateType (string className)。
[0071]在本實(shí)施例中,上述 AbstractClassBuiIder<TInterface)為抽象類,繼承于接口 ITypeBuiIder,該類中定義的私有字段包括:private const stringASSEMBLY_NAME = ^WCF.DynamicClientProxy.〃、private const MethodAttributesdefauItMethodAttributes = MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.Final | MethodAttributes.NewSlotΛprivate static bool saveGeneratedAssembly、 private AssemblyBuiIderassembIyBuiIderλ private AssemblyName assemblyName、private ModuleBuildermoduleBuiIder、 private readonly Type baseClassType、 private stringgeneratedAssemblyName、private string generatedClassName;上述字段分別代表程序集的名稱、方法的屬性、設(shè)置保存轉(zhuǎn)換的程序集至硬盤、定義AssemblyBuilder對(duì)象、定義AssemblyName對(duì)象、定義ModuleBuilder對(duì)象、定義了只讀的父類類型、轉(zhuǎn)換程序集名稱、轉(zhuǎn)換類名稱。該AbstractClassBuilder〈TInterface>類中定義的方法包括:private void GenerateAssembly O、private TypeGenerateTypeImplementation()、public void SaveGeneratedAssembly ()、protectedvirtual void GenerateMethodImpl (TypeBuilder builder)、protected virtualvoid GenerateMethodImpl (TypeBuilder builder, Type currentType)、protectedabstract void GenerateMethodImpl(Methodlnfo method, Type[] parameterTypes,ILGenerator iLGenerator)、protected bool IsVoidMethod (Methodlnfo methodlnfo)、protected Methodlnfo GetMethodFromBaseClass(string methodName)、 private voidGenerateConstructor(TypeBuilder builder);上述方法分別代表轉(zhuǎn)換程序集、轉(zhuǎn)換類似ClientBase<ITheInterface>的類型、保存轉(zhuǎn)換的類型、讀取聲明的接口和為每個(gè)聲明映射一個(gè)方法、重載GenerateMethodImpl方法、第二次重載GenerateMethodImpl方法、驗(yàn)證是否是返回void類型的方法、從基類中獲取方法、轉(zhuǎn)換構(gòu)造函數(shù)。;
因此,該類的構(gòu)造函數(shù)為 protected AbstractClassBuilder (Type baseClassType){this.baseClassType = baseClassType;},初始化時(shí)設(shè)置了基類的類型。
[0072]在本實(shí)施例中,上述WCFReusabIeProxyClassBuiIder〈TInterface> 繼承于類 AbstractClassBuilder〈TInterface>,該類覆寫了父類的 GenerateMethodImpl 方法。因此,該類的構(gòu)造函數(shù)為 public WCFReusableProxyClassBuilder (): base (typeof (WCFReusabIeClientProxy<TInterface>)) ;public WCFReusableProxyClassBuilder (TypebaseClassType): base (baseClassType)。
[0073]在本實(shí)施例中,上述ProxyBuilder為代理的創(chuàng)建和緩存的一個(gè)靜態(tài)類,該類中定義的兩個(gè)靜態(tài)只讀的字段分別為:private static readonly IDictionary〈string,Type> generatedTypes = new Dictionary<string, Type> ();private static readonlyobject generateLock = new object (),該 generatedTypes 用于存儲(chǔ)轉(zhuǎn)換類型的字典,generateLock用于存儲(chǔ)用戶鎖。該類中定義的方法包括:public static TypeBuildType<TInterface, TBuilder> () ;where TInterface: class ;where TBuilder:1TypeBuilderj new () ;private static Type TryGetType (string className) ;privatestatic string GetTypeName<TType>(string classNameSuffix)。
[0074]在本實(shí)施例中,上述WCFProxyClassBuilder〈TInterface> 繼承于類 AbstractClassBuilder〈TInterface>。該類中覆寫了父類的方法 GenerateMethodImpl,為 protectedoverride void GenerateMethodImpl(Methodlnfo method, Type [] parameterTypes,ILGenerator iLGenerator) □在方法的實(shí)現(xiàn)過(guò)程可以包括:首先獲取ClientBase的詳細(xì)屬性,然后獲取基類的頻道,準(zhǔn)備存放元素的緩沖區(qū)以方便之后的訪問(wèn),通過(guò)接口來(lái)訪問(wèn)頻道,最后提交發(fā)布。
[0075]因此,該類的構(gòu)造函數(shù)為:publicWCFProxyClassBuilder (): base (typeof (ClientBase<TInterface>)){}。
[0076]在本實(shí)施例中,上述WCFReusableFaultWrapperChannelProxyClassBuilder〈TInterface> 繼承于 WCFReusableFaultWrapperProxyClassBuilder〈TInterface>,代表通過(guò)ChannelFactory創(chuàng)建代理,而并非通過(guò)ClientBase。因此,該類中僅有的構(gòu)造函數(shù)為:public WCFReusabIeFaultWrapperChannelProxyClassBuiIderO: base(typeof(WCFReusableFaultWrapperChannelProxy<TInterface>)) {}。
[0077]在本實(shí)施例中,上述WCFReusableFaultWrapperProxyClassBuilder〈TInterface〉繼承于 WCFReusableProxyClassBuilder〈TInterface>,代表繼承于WCFAbstractClientProxy.cs創(chuàng)建了一個(gè)類,用于綁定一個(gè)WCF代理同時(shí)當(dāng)通道發(fā)生錯(cuò)誤時(shí)將自動(dòng)重建代理。該類中覆寫了父類的GenerateMethodImpl方法;緩沖池主要包括:ProxyConnectionPool、WcfConnectionPoolHandler。其中,ProxyConnectionPool 為可釋放對(duì)象,繼承 了 IDisposable ;該 ProxyConnectionPool代表一個(gè)連接池,可以獲取所有創(chuàng)建的動(dòng)態(tài)代理,同時(shí)進(jìn)行當(dāng)HttpConnection結(jié)束或者WCF操作完成時(shí)釋放動(dòng)態(tài)代理的操作J_PiOxyC0nneCti0nP00l中定義的字段可以包 括:private const string HttpContextPooIKey = "WCF.ProxyConnectionPool"、private readonly Dictionary<IClientBase, IClientBase> _openProxies = newDictionary<IClientBase, IClientBase> ()、private readonly Dictionary<Type,IClientBase> _openProxiesByType = new Dictionary<Type, IClientBase>()、privatestatic bool _enableConnectionPool;上述字段分別代表HTTP協(xié)議池的關(guān)鍵字、所有打開的代理、所有打開的類型的代理、保持線程池連接的bool值。該P(yáng)roxyConnectionPool中定義的方法包括:public static void Register〈T>(T connection)、 internalstatic T RequestFromPool〈T> () where T: class、static void clientBase_ProxyCreated (IClientBase proxy)、private void InternalRegister (IClientBaseclientBase)、private void DisposeAllConnections ();上述方法會(huì)泛夠保證無(wú)論是HTTPContext請(qǐng)求還是WCF操作,都將只有一個(gè)連接用于每個(gè)訪問(wèn)。該P(yáng)roxyConnectionPool 中可以定義的屬性包括:public static ProxyConnectionPoolCurrent λ private static ProxyConnectionPool _proxyConnectionPool ; 上 述屬性分別代表當(dāng)前的線程池連接和代理連接的線城池。該P(yáng)roxyConnectionPool還可以有一個(gè)內(nèi)部類的支持,為類ProxyConnectionPoolExtension繼承于類IExtension<OperationContext>,用于分離和擴(kuò)展對(duì)象 OperationContext。該WcfConnectionPoolHandler繼承于類IHttpModule,代表控制WCF連接池,此類的初始化時(shí)注冊(cè)HttpApplication的EndRequest事件,用于當(dāng)有新的代理連接時(shí),將釋放當(dāng)前的連接。WCF代理的動(dòng)態(tài)轉(zhuǎn)換器在WCFClientProxy〈TInterface>中實(shí)現(xiàn),公布了用于創(chuàng)建動(dòng)態(tài)代理的兩個(gè)方法包括:public static TInterface GetInstance (stringuri, Binding binding, object callback)> pub lie static TInterfaceGetInstance (string uri, Binding binding);并且該類中還聲明了輔助動(dòng)態(tài)代理的創(chuàng)建的方法,包括:public static TInterface GetReusableFaultUnwrappingInstance(string configName)、internal static Type GetInstanceType ()、privatestatic TInterface GetInstance(string configName)> private static TInterfaceGetReusableInstance (string configName);上述輔助動(dòng)態(tài)代理的創(chuàng)建方法分別代表返回一個(gè)通過(guò)特定接口和特定配置文件初始化的客戶端代理的新的實(shí)例、返回一個(gè)type類型的類對(duì)象,表示一個(gè)通過(guò)固定接口和特定配置文件初始化出來(lái)的代理、返回一個(gè)通過(guò)特定接口和特定配置文件初始化出來(lái)的客戶端代理的新的代理,同時(shí)這也是一個(gè)繼承于ClientBase的簡(jiǎn)單實(shí)例、返回一個(gè)通過(guò)特定接口和特定配置文件初始化出來(lái)的客戶端代理的新的代理,同時(shí)此代理當(dāng)需要清理自身的時(shí)候,可以重用。
[0078]步驟404至步驟406,資源管理服務(wù)器通過(guò)WCF回調(diào)向終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息,并向客戶端發(fā)送該響應(yīng)信息,使客戶端進(jìn)行更新。上述過(guò)程與圖1所示的步驟104至步驟106相似,在此不再一一贅述。
[0079]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0080]實(shí)施例四:
如圖5所示,本發(fā)明實(shí)施例提供的資源管理方法,區(qū)別在于,當(dāng)移動(dòng)終端的客戶端向終端服務(wù)器發(fā)送文件時(shí),本實(shí)施例提供的資源管理方法還可以包括:
步驟108,移動(dòng)終端的客戶端根據(jù)預(yù)設(shè)規(guī)則將文件分成小塊文件;
步驟109,根據(jù)預(yù)設(shè)標(biāo)記規(guī)則對(duì)每個(gè)小塊文件分別添加標(biāo)記,并向終端服務(wù)器發(fā)送標(biāo)記后的文件;
步驟110,終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向資源管理服務(wù)器發(fā)送標(biāo)記后的文件;
步驟111,資源管理服務(wù)器將標(biāo)記后的文件進(jìn)行組合后存儲(chǔ)。
[0081 ] 在本實(shí)施例中,為了便于文件上傳,可以通過(guò)上述方法首先將一個(gè)文件拆分成若干小塊,并標(biāo)記后發(fā)送。其中,拆分文件時(shí),既可以根據(jù)固定大小進(jìn)行,也可以拆分為固定塊,在此不作限制。
[0082] 在本實(shí)施例中,文件塊實(shí)體(AttachmentData)如下:
屬性為=FileID區(qū)域塊的ID值FileName文件名稱AddedTime文件添加的時(shí)間本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0083]實(shí)施例五:
如圖6所示,本發(fā)明實(shí)施例提供的資源管理方法,該方法與圖1所示的方法相似,區(qū)別在于,還包括:
步驟112,終端服務(wù)器向客戶端發(fā)送消息提醒;
步驟113,客戶端根據(jù)消息提醒進(jìn)行顯示。
[0084]在本實(shí)施例中,可以通過(guò)上述步驟自動(dòng)向客戶端推送提醒,該提醒可以為任務(wù)開始結(jié)束提醒、日程開始結(jié)束提醒或活動(dòng)強(qiáng)制提交提醒等。
[0085]在本實(shí)施例中,可以首先封裝消息提醒的基類ReminderCollection。在該基類中定義的字段包括用于啟動(dòng)消息提醒的線程protected Thread m_Thread,用于鎖、防止線程進(jìn)行某個(gè)消息提醒操作時(shí)其他線程干擾的protected readonly object m_lock = newobject ()。該基類的構(gòu)造函數(shù)中,可以通過(guò)心跳事件和消息提醒事件,以保證消息提醒每隔固定時(shí)間后,相應(yīng)的線程自動(dòng)啟動(dòng),消息提醒用戶的操作會(huì)引發(fā)系統(tǒng)內(nèi)存或數(shù)據(jù)庫(kù)的狀態(tài)變化??梢詫⒃摶惖膬蓚€(gè)事件的響應(yīng)方式設(shè)為虛方法,以便子類的覆寫。
[0086]在本實(shí)施例中,可以將RTasksCollection、RAgendasCollection、RActivityCollection等提醒類繼承上述基類,上述提醒類分別覆寫_eventCenterRemindUpdate_EventHandler方法,添加自己的提醒更新后的操作邏輯。該提醒類的提醒可以包括:任務(wù)的開始的提醒、任務(wù)結(jié)束的提醒。日程的提醒分為日程開始提醒、日程結(jié)束提醒。
[0087]在本實(shí)施例中,可以在每次提醒時(shí),監(jiān)聽(tīng)客戶端的響應(yīng),如果任一客戶端有響應(yīng),注銷此消息的提醒;如果客戶端均無(wú)響應(yīng),在提醒滿三次后進(jìn)入下次心跳機(jī)制的消息提醒。
[0088]在本實(shí)施例中,可以通過(guò)可釋放對(duì)象RemindRules判定是否提醒。該可釋放對(duì)象中定義的屬性包括:private readonly Dictionary<0bjectStatus, List<RemindTimeSpan>>m_rules= new Dictionary<0bjectStatus, List〈RemindTimeSpan>> ()、public longCustomerID { get; private set; } > private ObjectType m_0bjectType ;上述屬f生分另lj表示存放用戶的提醒規(guī)則、用戶的Id值、提醒消息的類型(任務(wù)、日程、活動(dòng)、聊天等)。
[0089]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0090]實(shí)施例六:
如圖7所示,本發(fā)明實(shí)施例提供的資源管理方法,該方法與圖1所示的相似,區(qū)別在于,本實(shí)施例提供的方法,還可以包括:
步驟114,終端服務(wù)器設(shè)置發(fā)送響應(yīng)信息的鎖和延時(shí);
步驟115,客戶端接收到響應(yīng)信息時(shí),向終端服務(wù)器發(fā)送反饋信息;
步驟116,如果終端服務(wù)器在延時(shí)時(shí)間內(nèi)接收到反饋信息,釋放鎖并更新預(yù)先存儲(chǔ)的交互記錄;
步驟117,如果終端服務(wù)器超過(guò)延時(shí)時(shí)間未接收到反饋信息,釋放鎖。[0091]在本實(shí)施例中,可以在移動(dòng)終端的客戶端與終端服務(wù)器交互時(shí),設(shè)置鎖和延時(shí)timeout ;客戶端在接收到響應(yīng)信息時(shí),向終端服務(wù)器發(fā)送反饋信息;終端服務(wù)器在延時(shí)時(shí)間內(nèi)接收到反饋信息時(shí),釋放鎖并更新延時(shí)記錄;終端服務(wù)器當(dāng)超過(guò)延時(shí)時(shí)間未接收到反饋信息,直接釋放鎖。通過(guò)上述過(guò)程,能夠?qū)崿F(xiàn)客戶端數(shù)據(jù)及時(shí)有效地更新。例如當(dāng)終端服務(wù)器發(fā)送提醒消息時(shí),客戶端響應(yīng)后,終端服務(wù)器可以終止再次提醒操作,并更新提醒相關(guān)的記錄。
[0092]在本實(shí)施例中,為了避免終端服務(wù)器推送消息后,不等待客戶端響應(yīng)直接執(zhí)行后續(xù)操作,無(wú)法確認(rèn)消息是否成功推送到客戶端的問(wèn)題,本實(shí)施例提供的技術(shù)方案可以釆用方法同步機(jī)制??梢酝ㄟ^(guò)下述三個(gè)對(duì)象實(shí)現(xiàn)方法的同步,包括:MethodSynchronizationContextλ MethodSyncResultλ MethodSynchronizer0
[0093]在本實(shí)施例中,上述MethodSynchronizer為同步機(jī)制的數(shù)據(jù)實(shí)體,主要包括以下屬性:private bool m—IsTimeout、public object Result、public Exception Exception、public bool IsTimeout ;上述屬性分別表不超時(shí)的bool值、返回的結(jié)果、異常信息、超時(shí)的屬性值。因此,該類的構(gòu)造函數(shù)為public MethodSyncResult (object result, boolisTimeoutReturn)、public MethodSyncResult(Exception exp)。
[0094]在本實(shí)施例中,上述類MethodSynchronizationContext用來(lái)維護(hù)MethodSynchronizer 集合,該類中定義 了 集合 private readonly Dictionary<ob ject,MethodSynchronizer> m—Buffer = new Dictionary<object, MethodSynchronizer>()用于存放MethodSynchronizer ;為了確保該類的唯一性,定義常量Instance為:public static readonly MethodSynchronizationContext Instance = newMethodSynchronizationContext ()。該類中可以提供注冊(cè) MethodSynchronizer 對(duì)象、注銷MethodSynchronizer對(duì)象、建立MethodSynchronizer對(duì)象的索引共三個(gè)方法。
[0095]在本實(shí)施例中,類MethodSynchronizer為可釋放的對(duì)象,用于通過(guò)ManualResetEvent線程來(lái)實(shí)現(xiàn)方法的同步。該類中定義的對(duì)象包括:public stringGUID_MS0bj;private readonly ManualResetEvent m_ManuaIResetEvent = newManualResetEvent(false);private object m—returnObj = null;private bool m—isDisposed = false;上述對(duì)象分別代表:類的唯一標(biāo)識(shí)GUID、只讀的ManualResetEvent對(duì)象、返回的對(duì)象、判斷是否釋放的bool值。
[0096]在本實(shí)施例中,類中重載構(gòu)造函數(shù)包括:public MethodSynchronizer ():this (Guid.NewGuid().ToString ()) { } ;protected MethodSynchronizer(stringguid) {} o 該類中方法包括:public void Dispose () ;public MethodSyncResultMethodCall (Delegate call) ;public MethodSyncResult MethodCall(Delegate call,params object [] args) ;public virtual bool MethodReturn (object returnObj);public static bool MethodReturn(string guidKey, object returnObj) ;protectedvirtual void onMethodCalIReturn(MethodSyncResult result) ;protected virtualvoid onDispose () □通過(guò)上述方法,利用ManualResetEvent對(duì)象實(shí)現(xiàn)方法的同步功能。
[0097]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0098]實(shí)施例七:
如圖8所示,本發(fā)明實(shí)施例提供的資源管理方法,該方法與圖1所示的相似,區(qū)別在于,本實(shí)施例提供的方法,還包括:
步驟118,通過(guò)客戶端向終端服務(wù)器發(fā)送用戶輸入的用戶名和密碼;
步驟119,終端服務(wù)器對(duì)用戶名和密碼進(jìn)行認(rèn)證,認(rèn)證成功時(shí),向客戶端發(fā)送加密后的服務(wù)器地址和端口;
步驟120,客戶端對(duì)加密后的服務(wù)器地址和端口進(jìn)行加密,得到訪問(wèn)信息。
[0099]此時(shí),步驟102具體為,移動(dòng)終端的客戶端根據(jù)訪問(wèn)信息通過(guò)WCF服務(wù)訪問(wèn)終端服務(wù)器。
[0100]在本實(shí)施例中,為了提高服務(wù)器的安全性,服務(wù)器地址和端口可以通過(guò)加密的方式放入授權(quán)文件中,使客戶端可以直接通過(guò)加載授權(quán)文件的方式實(shí)現(xiàn)登錄。加密的密鑰可以為 DESCryptoServiceProvider des = new DESCryptoServiceProvider () ; des.Key=new byte [] { 0x01, 0x02, 0x03, 0x05, 0x05, 0x06, 0x07, 0x08 } ; des.1V = newbyte [] { 0x01, 0x02, 0x03, 0x05, 0x05, 0x06, 0x07, 0x08 }。
[0101]在本實(shí)施例中,服務(wù)可以分為移動(dòng)終端服務(wù)和資源管理主服務(wù),客戶端登錄時(shí),可以通過(guò)服務(wù)器地址和端口訪問(wèn)移動(dòng)終端核心服務(wù),同時(shí)組織信息、當(dāng)前移動(dòng)終端IP地址、當(dāng)前移動(dòng)終端名、用戶名、密碼將通過(guò)核心服務(wù)傳遞到移動(dòng)終端服務(wù)后臺(tái),與數(shù)據(jù)庫(kù)里的用戶名和密碼進(jìn)行匹配,若匹配失敗,則提示用戶用戶名密碼錯(cuò)誤;若匹配成功,移動(dòng)終端服務(wù)將首先通過(guò)內(nèi)存中在線用戶的對(duì)比判斷用戶是否已通過(guò)其他移動(dòng)終端登陸,若判斷移動(dòng)終端不在線,移動(dòng)終端服務(wù)將與資源管理主服務(wù)通訊進(jìn)行登陸操作(將組織信息、當(dāng)前移動(dòng)終端IP地址、當(dāng)前移動(dòng)終端名、用戶名傳遞至資源管理主服務(wù)后臺(tái),與數(shù)據(jù)庫(kù)里的信息進(jìn)行匹配,如果相同則登錄成功且將這些用戶信息保存在服務(wù)器的內(nèi)存中,否則返回相應(yīng)提示失敗信息至客戶端)。若判斷移動(dòng)終端在線,移動(dòng)終端服務(wù)端將推送在線消息到當(dāng)前移動(dòng)終端上提示用戶是否強(qiáng)制登陸,若用戶選擇強(qiáng)制登陸,那么移動(dòng)終端服務(wù)端將注銷在線的移動(dòng)終端狀態(tài),并推送強(qiáng)制下線消息至目標(biāo)移動(dòng)終端上,然后移動(dòng)終端服務(wù)與資源管理主服務(wù)通訊進(jìn)行登陸操作。若用戶未選擇強(qiáng)制登陸,則服務(wù)器狀態(tài)不發(fā)生任何變化,客戶端退出登陸界面。
[0102]在本實(shí)施例中,用戶登陸的實(shí)體為L(zhǎng)oginResult,當(dāng)用戶登陸成功后,系統(tǒng)中又定義了實(shí)體LoginSucceed。其中LoginResult實(shí)體中定義了屬性Result (為登陸結(jié)果),將其定義為virtual類型的,以方便子類的覆寫。構(gòu)造函數(shù)重載兩個(gè),一個(gè)無(wú)參數(shù),另一個(gè)將Result作為參數(shù)。LoginSucceed繼承LoginResult,實(shí)體中覆寫父類的Result,將其設(shè)置為返回登陸成功,其他的屬性包括如下:public string OnlineKey;public longCustomerID;public string DisplayName;上述屬性分別代表用戶在線的唯一標(biāo)識(shí)Key、用戶的ID值、用戶的姓名。當(dāng)用戶登陸成功,將分會(huì)LoginSucceed實(shí)體,客戶端將通過(guò)文件形式保存實(shí)體的信息,記錄用戶當(dāng)前狀態(tài),方便之后的操作取實(shí)體中的相關(guān)數(shù)據(jù)。同時(shí)內(nèi)存中也將保存相關(guān)的數(shù)據(jù);當(dāng)用戶注銷時(shí),通過(guò)消息頭認(rèn)證,根據(jù)用戶的ID值,首先注銷資源管理服務(wù)器處的登錄,注銷成功后,再執(zhí)行手機(jī)服務(wù)中用戶注銷操作。注銷資源管理服務(wù)時(shí),只需調(diào)用資源管理服務(wù)提供的用戶注銷的方法即可,而無(wú)需進(jìn)行資源管理內(nèi)存相關(guān)管理的任何操作。在進(jìn)行手機(jī)服務(wù)注銷時(shí),首先需修改數(shù)據(jù)庫(kù)中的信息,將用戶的狀態(tài)設(shè)為O,同時(shí)內(nèi)存中的數(shù)據(jù)也將發(fā)生修改,根據(jù)用戶的ID,在CMSContext中將注銷CustomerMemoryState對(duì)象。用戶注銷后,他的信息將不在內(nèi)存中保存。當(dāng)用戶再次登錄時(shí),內(nèi)存中將恢復(fù)他的相關(guān)信息,比如待執(zhí)行的任務(wù)日程,當(dāng)前的狀態(tài)(包括登錄狀態(tài)、當(dāng)前任務(wù)、當(dāng)前日程、當(dāng)前活動(dòng))。用戶頭像的獲取,主要是通過(guò)調(diào)用資源管理服務(wù)的方法,通過(guò)資源管理的方法獲取圖像的字節(jié)流,然后傳給客戶端。
[0103]在本實(shí)施例中,為了和資源管理服務(wù)進(jìn)行兼容,手機(jī)服務(wù)端提供獲取資源管理服務(wù)端所有服務(wù)的地址,在客戶端剛啟動(dòng)時(shí)就需調(diào)用此方法,將所有服務(wù)的地址通過(guò)文件形式保存在客戶端,以方便之后的調(diào)用操作,完成相關(guān)功能。用戶可根據(jù)員工的ID獲取相關(guān)員工的當(dāng)前狀態(tài),進(jìn)行此操作時(shí),首先得進(jìn)行權(quán)限的認(rèn)證,下級(jí)是不可以獲取上級(jí)得當(dāng)前狀態(tài)的。是否有權(quán)限獲取用戶的當(dāng)前狀態(tài),完全按照SSEIS中的策略體制進(jìn)行驗(yàn)證。
[0104]本發(fā)明實(shí)施例提供的資源管理方法,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0105]實(shí)施例八:
如圖9所示,本發(fā)明實(shí)施例提供的資源管理客戶端,包括:
信息接收模塊901,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息;
訪問(wèn)模塊902,用于通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息,使所述終端服務(wù)器從資源管理服務(wù)器獲取對(duì)應(yīng)的響應(yīng)信息;
響應(yīng)接收模塊903,用于接收所述終端服務(wù)器通過(guò)消息推送的響應(yīng)信息;
更新模塊904,用于根據(jù)所述響應(yīng)信息進(jìn)行更新。
[0106]在本實(shí)施例中,通過(guò)信息接收模塊901、訪問(wèn)模塊902、響應(yīng)接收模塊903和更新模塊904實(shí)現(xiàn)資源管理的過(guò)程,與本發(fā)明實(shí)施例一提供的相似,在此不再一一贅述。
[0107]進(jìn)一步的,如圖10所示,本實(shí)施例提供的資源管理客戶端,還包括:
提醒接收模塊905,用于接收終端服務(wù)器根據(jù)心跳機(jī)制發(fā)送的提醒信息。
[0108]在本實(shí)施例中,終端服務(wù)器可以根據(jù)心跳機(jī)制向客戶端發(fā)送提醒信息,使資源管理客戶端可以通過(guò)提醒接收模塊905接收終端服務(wù)器根據(jù)心跳機(jī)制發(fā)送的提醒信息。終端服務(wù)器發(fā)送提醒信息的過(guò)程,與本發(fā)明實(shí)施例二提供的相似,在此不再一一贅述。
[0109]進(jìn)一步的,本實(shí)施例提供的資源管理客戶端,訪問(wèn)模塊,還可以具體用于采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器。
[0110]在本實(shí)施例中,資源管理客戶端可以采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器;終端服務(wù)器也可以采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器。采用動(dòng)態(tài)代理的過(guò)程與本發(fā)明實(shí)施例三提供的相似,在此不再一一贅述。
[0111]進(jìn)一步的,如圖11所示,本實(shí)施例中資源管理客戶端,向終端服務(wù)器發(fā)送文件時(shí),還可以包括:
拆分模塊906,用于根據(jù)預(yù)設(shè)規(guī)則將所述文件分成小塊文件;
標(biāo)記發(fā)送模塊907,用于根據(jù)預(yù)設(shè)標(biāo)記規(guī)則對(duì)每個(gè)小塊文件分別添加標(biāo)記,并向所述終端服務(wù)器發(fā)送標(biāo)記后的文件,使資源管理服務(wù)器能夠根據(jù)標(biāo)記后的文件進(jìn)行組合后存儲(chǔ)。[0112]在本實(shí)施例中,通過(guò)拆分模塊906和標(biāo)記發(fā)送模塊907實(shí)現(xiàn)資源管理服務(wù)器組合存儲(chǔ)的過(guò)程,與本發(fā)明實(shí)施例四提供的相似,在此不再一一贅述。
[0113]進(jìn)一步的,如圖12所示,本實(shí)施例提供的資源管理客戶端,還可以包括:
消息發(fā)送模塊908,用于接收所述終端服務(wù)器發(fā)送的消息提醒;
顯示模塊909,用于根據(jù)所述消息提醒進(jìn)行顯示。
[0114]在本實(shí)施例中,通過(guò)消息發(fā)送模塊908和顯示模塊909顯示消息提醒的過(guò)程,與本發(fā)明實(shí)施例五提供的相似,在此不再一一贅述。
[0115]進(jìn)一步的,如圖13所示,本實(shí)施例提供的資源管理客戶端,還可以包括:
登錄發(fā)送模塊910,用于向終端服務(wù)器發(fā)送用戶輸入的用戶名和密碼,使所述終端服務(wù)
器進(jìn)行認(rèn)證,認(rèn)證成功時(shí),返回加密后的服務(wù)器地址和端口 ;
解密模塊911,用于對(duì)所述加密后的服務(wù)器地址和端口進(jìn)行解密,得到訪問(wèn)信息; 所述訪問(wèn)模塊902,具體用于根據(jù)所述訪問(wèn)信息通過(guò)WCF服務(wù)訪問(wèn)終端服務(wù)器。
[0116]在本實(shí)施例中,通過(guò)上述過(guò)程訪問(wèn)終端服務(wù)器的方式,與本發(fā)明實(shí)施例七提供的相似,在此不再一一贅述。
[0117]本發(fā)明實(shí)施例提供的資源管理客戶端,可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0118]實(shí)施例九:
如圖14所示,本發(fā)明實(shí)施例提供的資源管理系統(tǒng),包括:
資源管理客戶端1401,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息;根據(jù)響應(yīng)信息進(jìn)行更新;
所述終端服務(wù)器1402,用于接收所述客戶端發(fā)送的所述資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息;通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息;
所述資源管理服務(wù)器1403,用于通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信
肩、O
[0119]通過(guò)資源管理客戶端1401、終端服務(wù)器1402和資源管理服務(wù)器1403實(shí)現(xiàn)資源管理的過(guò)程,與本發(fā)明實(shí)施例一至七提供的過(guò)程相似,在此不再一一贅述。
[0120]本發(fā)明實(shí)施例提供的資源管理系統(tǒng),可以在移動(dòng)終端的客戶端輸入資源管理信息,并通過(guò)與終端服務(wù)器和資源管理服務(wù)器的交互,實(shí)現(xiàn)資源管理。本發(fā)明實(shí)施例提供的技術(shù)方案,由于可以通過(guò)移動(dòng)終端實(shí)現(xiàn)資源管理,解決了現(xiàn)有技術(shù)不能隨時(shí)實(shí)現(xiàn)溝通或工作情況的匯報(bào)等操作,不便于用戶使用的問(wèn)題。
[0121]本發(fā)明實(shí)施例提供的資源管理方法、客戶端及系統(tǒng),可以應(yīng)用在手機(jī)等移動(dòng)終端上。
[0122]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種資源管理方法,其特征在于,包括: 用戶需要使用資源管理服務(wù)時(shí),通過(guò)移動(dòng)終端的客戶端接收資源管理信息; 所述移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息; 所述終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息; 所述資源管理服務(wù)器通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息; 所述終端服務(wù)器通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息; 所述客戶端根據(jù)所述響應(yīng)信息進(jìn)行更新。
2.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于,還包括: 所述終端服務(wù)器根據(jù)心跳機(jī)制向所述客戶端發(fā)送提醒信息。
3.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于, 所述移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,包括:所述移動(dòng)終端的客戶端采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器; 所述終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,包括:所述終端服務(wù)器采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器。
4.根據(jù)權(quán)利要求1所述`的資源管理方法,其特征在于, 所述資源管理服務(wù)器采用serverhost部署; 所述終端服務(wù)器通過(guò)IIS加載、與所述資源管理服務(wù)器集成。
5.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于,所述移動(dòng)終端的客戶端向所述終端服務(wù)器發(fā)送文件時(shí),所述方法還包括: 所述移動(dòng)終端的客戶端根據(jù)預(yù)設(shè)規(guī)則將所述文件分成小塊文件; 根據(jù)預(yù)設(shè)標(biāo)記規(guī)則對(duì)每個(gè)小塊文件分別添加標(biāo)記,并向所述終端服務(wù)器發(fā)送標(biāo)記后的文件; 所述終端服務(wù)器通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述標(biāo)記后的文件; 所述資源管理服務(wù)器將所述標(biāo)記后的文件進(jìn)行組合后存儲(chǔ)。
6.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于,還包括: 所述終端服務(wù)器向所述客戶端發(fā)送消息提醒; 所述客戶端根據(jù)所述消息提醒進(jìn)行顯示。
7.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于,所述方法還包括: 所述終端服務(wù)器設(shè)置發(fā)送所述響應(yīng)信息的鎖和延時(shí); 所述客戶端接收到所述響應(yīng)信息時(shí),向所述終端服務(wù)器發(fā)送反饋信息; 如果所述終端服務(wù)器在延時(shí)時(shí)間內(nèi)接收到所述反饋信息,釋放鎖并更新預(yù)先存儲(chǔ)的交互記錄; 如果所述終端服務(wù)器超過(guò)延時(shí)時(shí)間未接收到所述反饋信息,釋放鎖。
8.根據(jù)權(quán)利要求1所述的資源管理方法,其特征在于,所述方法還包括: 通過(guò)所述客戶端向終端服務(wù)器發(fā)送用戶輸入的用戶名和密碼; 所述終端服務(wù)器對(duì)所述用戶名和密碼進(jìn)行認(rèn)證,認(rèn)證成功時(shí),向所述客戶端發(fā)送加密后的服務(wù)器地址和端口; 所述客戶端對(duì)所述加密后的服務(wù)器地址和端口進(jìn)行解密,得到訪問(wèn)信息; 所述移動(dòng)終端的客戶端通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,包括:所述移動(dòng)終端的客戶端根據(jù)所述訪問(wèn)信息通過(guò)WCF服務(wù)訪問(wèn)終端服務(wù)器。
9.一種資源管理客戶端,其特征在于,包括: 信息接收模塊,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息; 訪問(wèn)模塊,用于通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息,使所述終端服務(wù)器從資源管理服務(wù)器獲取對(duì)應(yīng)的響應(yīng)信息; 響應(yīng)接收模塊,用于接收所述終端服務(wù)器通過(guò)消息推送的響應(yīng)信息; 更新模塊,用于根據(jù)所述響應(yīng)信息進(jìn)行更新。
10.根據(jù)權(quán)利要求9所述的資源管理客戶端,其特征在于,還包括: 提醒接收模塊,用于接收終端服務(wù)器根據(jù)心跳機(jī)制發(fā)送的提醒信息。
11.根據(jù)權(quán)利要求9所述的資源管理客戶端,其特征在于, 所述訪問(wèn)模塊,具體用于采用動(dòng)態(tài)代理通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器。
12.根據(jù)權(quán)利要求9所述的資源管理客戶端,其特征在于,向終端服務(wù)器發(fā)送文件時(shí),所述裝置還包括: 拆分模塊,用于根據(jù)預(yù)設(shè)規(guī)則將所述`文件分成小塊文件; 標(biāo)記發(fā)送模塊,用于根據(jù)預(yù)設(shè)標(biāo)記規(guī)則對(duì)每個(gè)小塊文件分別添加標(biāo)記,并向所述終端服務(wù)器發(fā)送標(biāo)記后的文件,使資源管理服務(wù)器能夠顧根據(jù)標(biāo)記后的文件進(jìn)行組合后存儲(chǔ)。
13.根據(jù)權(quán)利要求9所述的資源管理客戶端,其特征在于,還包括: 消息發(fā)送模塊,用于接收所述終端服務(wù)器發(fā)送的消息提醒; 顯示模塊,用于根據(jù)所述消息提醒進(jìn)行顯示。
14.根據(jù)權(quán)利要求9所述的資源管理客戶端,其特征在于,還包括: 登錄發(fā)送模塊,用于向終端服務(wù)器發(fā)送用戶輸入的用戶名和密碼,使所述終端服務(wù)器進(jìn)行認(rèn)證,認(rèn)證成功時(shí),返回加密后的服務(wù)器地址和端口 ; 解密模塊,用于對(duì)所述加密后的服務(wù)器地址和端口進(jìn)行解密,得到訪問(wèn)信息; 所述訪問(wèn)模塊,具體用于根據(jù)所述訪問(wèn)信息通過(guò)WCF服務(wù)訪問(wèn)終端服務(wù)器。
15.一種資源管理系統(tǒng),其特征在于,包括: 資源管理客戶端,用于用戶需要使用資源管理服務(wù)時(shí),接收資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)終端服務(wù)器,并向所述終端服務(wù)器發(fā)送所述資源管理信息;根據(jù)響應(yīng)信息進(jìn)行更新; 所述終端服務(wù)器,用于接收所述客戶端發(fā)送的所述資源管理信息;通過(guò)WCF服務(wù)調(diào)用訪問(wèn)資源管理服務(wù)器,并向所述資源管理服務(wù)器發(fā)送所述資源管理信息;通過(guò)消息推送向所述客戶端發(fā)送所述響應(yīng)信息; 所述資源管理服務(wù)器,用于通過(guò)WCF回調(diào)向所述終端服務(wù)器發(fā)送對(duì)應(yīng)的響應(yīng)信息。
【文檔編號(hào)】H04L12/58GK103873343SQ201210531417
【公開日】2014年6月18日 申請(qǐng)日期:2012年12月11日 優(yōu)先權(quán)日:2012年12月11日
【發(fā)明者】丁力 申請(qǐng)人:鎮(zhèn)江金鈦軟件有限公司