1

Ich habe einige Lotus Domino-Datenbanken (die hinter IBM Notes), wo meine Daten gespeichert sind. In meiner Rails-Anwendung möchte ich die Daten analysieren, um Live-Berichte zu erstellen.Extrahieren (Live) von Daten aus IBM Domino-Datenbank in Rails-Anwendung

Mein erster Gedanke war, die Daten mit Hilfe eines Agenten in Notes zu exportieren, aber es scheint so ineffizient und wird nicht helfen, wenn ich Berichte live machen will.

Hat jemand Erfahrung mit der Berichterstattung aus Domino-Datenbanken und/oder hat er eine Idee, wie ich (in der Nähe von) was ich brauche?

+0

Sie verwenden Domino Access Services erhalten eine REST-Schnittstelle zu den Domino-Daten –

+0

Domino ist auch ein Web-Server und einen Anwendungsserver Sie, könnte Ihren Bericht von dort erstellen –

+0

Sie können auch einen Webservice-Provider in Domino erstellen, ihn in Java codieren und Bibliotheken wie Jackson, Gson oder JSON.simple verwenden. –

Antwort

2

Sie können Domino Access Services verwenden, wie Pe Henrik sagt. Youl könnte auch Ihre eigene API/Funktion schreiben, die die angeforderten Daten als JSON (oder JSONP, wenn auf verschiedenen Servern) zurückgibt. Ich habe darüber hier blooged: http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/ Ich habe auch zwei Präsentationen, die dieses Thema behandelt: http://blog.texasswede.com/mwlug-2015/ und http://blog.texasswede.com/my-connect-2016-presentation-demo-database/ Es gibt auch Beispielcode auf diese Links.

Aber es ist nicht schwer, einen Lotusscript-Agenten zu erstellen, der Daten an externe Webanwendungen wie diese liefert.

Hier ist meine Lotusscript-Klasse, die Sie zurückkommen JSON helfen:

%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