1

У меня есть базы данных Lotus Domino (те, которые находятся за IBM Notes), где хранятся мои данные. В моем приложении rails я хочу проанализировать данные для создания живых отчетов.Извлечение данных из базы данных IBM Domino в приложение rails

Моя первая мысль заключалась в том, чтобы экспортировать данные с помощью агента в Notes, но это кажется неэффективным и не поможет, если я хочу делать отчеты вживую.

У кого-нибудь есть опыт работы с отчетами из баз данных Domino и/или есть идеи о том, как я мог бы получить (в ближайшем), что мне нужно?

+0

Вы можете использовать Domino Access Services, чтобы получить интерфейс REST к данным Domino –

+0

Domino также является веб-сервер и сервер приложений, вы мог бы построить ваш отчет оттуда –

+0

Вы также можете сделать провайдера webservice в Domino, кодируя его на Java и используя библиотеки, такие как Jackson, Gson или JSON.simple. –

ответ

2

Вы можете использовать Службы доступа Domino, как говорит Пе Хенрик. Вы также можете написать свой собственный API/функцию, которая вернет запрошенные данные как JSON (или JSONP, если на разных серверах). Я blooged об этом здесь: http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/ У меня также есть две презентаций, которые охватывают эту тему: http://blog.texasswede.com/mwlug-2015/ и http://blog.texasswede.com/my-connect-2016-presentation-demo-database/ Существует также пример кода по этим ссылкам.

Но нетрудно создать агент Lotusscript, который обслуживает данные в таком внешнем веб-приложении.

Вот мой класс LotusScript, который поможет вам вернуть JSON:

%REM 
    Library Class.JSON by Karl-Henry Martinsson 
    Created Oct 9, 2014 - Initial version 
    Updated Nov 6, 2015 - Added JSONP support 
    Description: Class to generate simple JSON from values 
%END REM 

Option Public 
Option Declare 

Class JSONdata 
    Private p_json List As String 

    Public Sub New() 
     '*** Set default value(s) 
     me.p_json("ajaxstatus") = "" 
    End Sub 

    %REM 
     Property Set success 
     Description: Set success to true or false 
    %END REM 
    Public Property Set success As Boolean 
     If me.success Then 
      Call me.SetValue("ajaxstatus","success") 
     Else 
      Call me.SetValue("ajaxstatus","error") 
     End If 
    End Property 

    %REM 
     Property Get success 
     Description: Not really used... 
    %END REM 
    Public Property Get success As Boolean 
     If me.p_json("ajaxstatus") = |"success"| Then 
      me.success = True 
     Else 
      me.success = False 
     End If 
    End Property 

    %REM 
     Sub SetMsg 
     Description: Set msg item 
    %END REM 
    Public Sub SetMsg(message As String) 
     Call me.SetValue("msg",message) 
    End Sub 

    Public Sub SetErrorMsg(message As String) 
     Call me.SetValue("errormsg",message) 
     me.success = False 
    End Sub 

    Public Sub SetValue(itemname As String, value As String) 
     Dim tmp As String 
     Dim delimiter As String 
     '*** Check for quote (double and single) and fix value if needed 
     tmp = Replace(value,Chr$(13),"<br>") 
     tmp = FullTrim(Replace(tmp,Chr$(10),"")) 
     If InStr(tmp,|"|)>0 Then 
      If InStr(tmp,|'|)>0 Then 
       tmp = Replace(tmp,|"|,|"|) 
       delimiter = |"| 
      Else 
       delimiter = |'| 
      End If 
     Else 
      delimiter = |"| 
     End If 
     '*** Store value with delimiter in list 
     me.p_json(itemname) = delimiter & tmp & delimiter 
    End Sub 

    Public Sub SetData(itemname As String, value As String) 
     '*** Store value in list 
     me.p_json(itemname) = value 
    End Sub 

    %REM 
     Function GetJSON 
     Description: Return a JSON object as text 
    %END REM 
    Function GetJSON As String 
     Dim json As String 
     '*** Opening curly braces + CR 
     json = "{" + Chr$(13) 
     '*** Loop through all list elements and build JSON 
     ForAll j In me.p_json 
      json = json + |"| + ListTag(j) + |":| + j + "," + Chr$(13) 
     End ForAll 
     '*** Remove the comma after the last item 
     json = Left$(json,Len(json)-2) + Chr$(13) 
     '*** Add closing curly bracket and return JSON 
     json = json + "}" 
     GetJSON = json 
    End Function 

    %REM 
     Sub SendToBrowser 
     Description: Print JSON to browser, with correct MIME type 
    %END REM 
    Public Sub SendToBrowser() 
     '*** MIME Header to tell browser what kind of data we will return (JSON). 
     '*** See http://www.ietf.org/rfc/rfc4627.txt 
     Print "content-type: application/json" 
     Print me.GetJSON 
    End Sub 

    %REM 
     Sub SendJSONPToBrowser 
     Description: Print JSONP to browser, with correct MIME type 
    %END REM 
    Public Sub SendJSONPToBrowser(callbackFunction As String) 
     '*** MIME Header to tell browser what kind of data we will return (Javascript). 
     '*** See http://www.rfc-editor.org/rfc/rfc4329.txt 
     Print "content-type: application/javascript" 
     Print callbackFunction + "(" + me.GetJSON + ")" 
    End Sub 

End Class 
Смежные вопросы