Экспорт списка проектов из Clarity PPM в Excel
Кто-нибудь знает, как получить список проектов из Clarity PPM, чтобы преуспеть с помощью интерфейсов SOAP (XOG PPM) и VBA (Excel)?
Я смог использовать интерфейс для успешного входа в систему, но не могу идти дальше... Документация по XML недостаточно ясна для меня.
Вот как я мог войти и получить идентификатор сессии
Sub Soap_LOGIN()
' RKO
' add MS XML v6 reference : tool/Reference
'Set and instantiate our working objects
Dim Req As Object
Dim sEnv As String
Dim Resp As New MSXML2.DOMDocument60
Set Req = CreateObject("MSXML2.XMLHTTP")
Set Resp = CreateObject("MSXML2.DOMDocument.6.0")
Req.Open "Post", "http://SERVER/niku/xog", False
Req.setRequestHeader "Content-Type", "text/plain; charset=UTF-8"
Req.setRequestHeader "soapaction", "http://www.niku.com/xog/Query/Login" ' per the documentation
Req.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
Req.setRequestHeader "Connection", "keep -alive"
' we create our SOAP envelope for submission to the Web Service
sEnv = sEnv & "<?xml version=""1.0"" encoding=""utf-8""?>"
sEnv = sEnv & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
sEnv = sEnv & " <soap:Body>"
sEnv = sEnv & " <Login xmlns=""http://www.niku.com/xog/Query"">"
sEnv = sEnv & " <TenantID>Clarity</TenantID>"
sEnv = sEnv & " <Username>XXXX</Username>"
sEnv = sEnv & " <Password>YYYY</Password>"
sEnv = sEnv & " </Login>"
sEnv = sEnv & " </soap:Body>"
sEnv = sEnv & "</soap:Envelope>"
MsgBox sEnv
' Send SOAP Request
Req.send (sEnv)
' Display results in MessageBox
'MsgBox Req.responseText
Resp.LoadXML Req.responseText
MsgBox (Req.responseText)
MsgBox Resp.Text '<--- This is the Session ID
'clean up code
Set Req = Nothing
Set Resp = Nothing
End Sub
1 ответ
Если вам удалось войти в систему и получить идентификатор сеанса, то вы почти у цели. Вы можете создать SOAP-запрос для запроса проектов:
<soap:invoke endpoint="${XOGURL}/niku/xog" var="xogoutput">
<soap:message>
<soap-env:Envelope>
<soap-env:Header>
<xog:Auth>
<xog:SessionID>SESSIONID</xog:SessionID>
</xog:Auth>
</soap-env:Header>
<soap-env:Body>
<XOGREQUEST/>
</soap-env:Body>
</soap-env:Envelope>
</soap:message>
</soap:invoke>
В приведенном выше тексте замените SESSIONID на свой идентификатор сессии. Затем замените ваш XML-запрос на чтение ваших проектов. Примером этого может быть:
<NikuDataBus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/nikuxog_read.xsd">
<Header version="6.0.11" action="read" objectType="project" externalSource="NIKU">
</Header>
<Query>
<Filter name="projectID" criteria="EQUALS">test</Filter>
</Query>
</NikuDataBus>
Замените тест идентификатором проекта, который вы хотите вернуть. В зависимости от вашей конфигурации Clarity это может вернуть большое количество данных, только для одного проекта. В руководстве Clarity XOG и Интеграция будет показано, как расширить вышеупомянутый фильтр, чтобы получить больше проектов. В качестве альтернативы, в любой документации Clarity загрузите клиент XOG, чтобы получить образец project_read.xml из папки примеров xml.
Когда вы вернете свои проекты, вам нужно будет обработать данные XML. Это может быть довольно сложной задачей.
Если вы просто хотите получить список проектов, более простым механизмом может быть написание SQL в MS Excel (Меню / Данные / Из источников Otehr /SQL) и использование ODBC-соединения для прямого подключения к базе данных Clarity.
Другими альтернативами может стать написание отчета (если вы используете SQL Server, вы можете использовать SSRS для этого).
Другой подход, который лучше всего использовать для простых интеграций, может заключаться в написании сценария GEL на сервере Clarity для извлечения списка проектов и копирования результатов в файл CSV на сервере FTP.