written by Manuel Schnitger, 21. June 2011
Today I’d just like to write a few lines about the changes regarding the RQL programming in version 11 of the Management Server (scheduled for the end of the year.) The change I’ll describe might sound like a totally different approach (and that is possible when looking behind the scenes) but the impact for you as someone who creates RQL based plugins is very small.
Ok, the change: In the Managment Server Version 11 (Swan version) Microsofts COM components for the RQL communication are not longer available/supported. Instead of the COM communication the Management Server will use the Windows Communication Foundation that is part of the .Net framework.
Reasons:
In order to provide a good overview I’ll provide a function that is probably used by many developers and in a second step I’ll provide a sample RQL plugin that is intended to run on a Management Server version 11.
Version 10 and earlier:
<% function sendXML (XMLString) set objData = server.CreateObject("RDCMSASP.RdPageData") objData.XMLServerClassname="RDCMSServer.XmlServer" sendXML = objData.ServerExecuteXML(XMLString, sErrors) end function %>
Version 11:
<% function sendXML (XMLString) set objData = Server.CreateObject("OTWSMS.AspLayer.PageData") sendXML = objData.ServerExecuteXml(XMLString, sErrors) end function %>
The changes to this function are obviously very small:
Hint: If your obejcts do have other names….then of course you have to use different search strings ;)
As most people (including me) like to have a runing script instead of just a code snippet, this sample plugin might be helpful:
<% ' Create RQL Server Object And XML Document Object set XMLDom = Server.CreateObject("OTWSMS.Core.RdObject") set RQLObject = Server.CreateObject("OTWSMS.AspLayer.PageData") ' Define Variables Dim RQLStatement ' Contains the RQL command Dim RQLRequest ' Contains the result of the RQL Server Dim ServerError ' Contains an error message of the RQL Server Dim Projects ' Contains the number of the projects LoginGUID = session("LoginGUID") SessionKey = session("SessionKey") ' Create RQL Statement (Load All Projects) RQLStatement= "<IODATA loginguid=""" + LoginGUID + """>" + _ "<ADMINISTRATION>" + _ "<PROJECTS action=""list"" />" + _ "</ADMINISTRATION>" + _ "</IODATA>" ' Transfer RQL Statement To RQL Server Object RQLRequest = RQLObject.ServerExecuteXml(RQLStatement, ServerError) ' Show Appearing Errors if ServerError > "" then Response.write "An error has occured:</BR></BR>"+ServerError ' Load Result Into XML DOM Call XMLDom.LoadXML (CStr(RQLRequest)) ' Execute XML Query For Projects In XML DOM Set XMLDom = XMLDom.ObjectByQuery ("//PROJECTS") ' List Every Project By Name for Projects=1 to XMLDom.objects.count Response.write XMLDom.objects(Projects)("name")+"</BR>" next ' Kill RQL Server Object Set RQLObject=Nothing %>
Hint: If you have a closer look at the script, you’ll notice that there is another change that I forgot to mention. If you don’t use the Microsoft XML-DOM object but the one that is provided by the Management Server you’ll also have to change this line:
set XMLDom = Server.CreateObject(“OTWSMS.Core.RdObject”)
The same line in version looks like this:
set XmlDom = Server.CreateObject(“RDCMSAspObj.RdObject”)
So another search & replace task would look like this: Search for “RDCMSAspObj.RdObject” and replace it with “OTWSMS.Core.RdObject”.
Ok, so these were the changes regarding RQL communication. A description of the changes as well as the sample RQL plugin (above) are planned to be part of an updated RQL documentation.
To answer a question that might possibly occour: No, I’m not aware of any other changes regarding RQL. ;)
Have fun with RQL!
Source: RQL development with Open Text Management Server 11
© copyright 2011 by Manuel Schnitger