简体   繁体   中英

Extracting (live) data out of IBM Domino database into rails application

I have some Lotus Domino databases (the ones behind IBM Notes) where my data is stored. In my rails application I want to analyze the data to make live reports.

My first thought was to export the data with the help of an agent in Notes, but it seems so inefficient and won't help if I want to make reports live.

Does anyone have any experience with reporting out of Domino databases and/or has any idea on how i could get (in the near of) what i need?

You could use the Domino Access Services as Pe Henrik says. Youl could also write your own API/function that will return the requested data as JSON (or JSONP if on different servers). I have blooged about it here: http://blog.texasswede.com/calling-a-notes-web-agent-from-another-server-using-jsonp/ I also have two presentations that covers this subject: http://blog.texasswede.com/mwlug-2015/ and http://blog.texasswede.com/my-connect-2016-presentation-demo-database/ There is also sample code at those links.

But it is not hard to create a Lotusscript agent that serve up data to external web application like that.

Here is my Lotusscript class that will help you return 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM