Auswertung über API erstellen?

  • Hi,


    Du kannst über die rpc_reportslib (für die Auswertungen) und die rpc_schemaslib (für die Diagramme) Auswertungen und Diagramme erzeugen, oder auch Auswertungen generieren lassen. Die jeweiligen "Units" enthalten dann die Datenklassen und die Services:

    RpcReports

    RpcSchemas


    Du kannst da jeweils über die "New" Funktion Auswertungen und Diagramme anlegen, aber einfacher ist es, wenn du dir die Auswertungen und Diagramme, die ihr braucht, vorher mit dem GREYHOUND Client erstellst und dann über die API nur noch die Auswertung generieren lässt. Das ist dann die Funktion "Generate" in RpcSchemas. Dort übergibst Du die ID des Schemas, die ID des Reports und den Auswertungszeitraum und erhältst dann als Antwort ein Objekt vom Typ RpcReportSchema, in dem Du in der Property "Table" die Daten findest, die Dir auch der GREYHOUND Client beim Generieren der Auswertung anzeigt.


    Ich hoffe, das hilft Dir weiter, ansonsten sag gerne nochmal Bescheid.


    Grüße,

    Robert

  • Hi Robert,

    vielen Dank, das hilft sogar sehr viel.

    Ich bin mir in der Syntax noch etwas unsicher, und bräuchte da noch mal etwas Hilfe. Ich nutze in C# die GreyhoundClient.cs Class, die auch in der Doku zu finden ist.
    rpc_mit_C#


    wäre die Syntax so richtig? :
    string respond = gClient.SendXmlRequest("RpcSchemas.Generate", "SchemaID,ReportID,2021-10-06");

    gGClient ist ein Objekt von GreyhoundClient(host,ssl,user,passwd)


    Grüße,
    Jeremy

  • Ergänzung:
    ich bin bereits etwas weiter gekommen
    bei string respond = gClient.SendXmlRequest("RpcSchemas.Generate", XMLsettings);
    muss ich die Parameter im XML Format übergeben, jedoch bekomme ich dort noch Fehler (500) und weiß nicht wie der 3. Parameter aufgebaut sein muss.
    Meine XML bisher:

    <param>

    <value>

    <int>25</int>

    </value>

    </param>


    <param>

    <value>

    <int>25</int>

    </value>

    </param>


    <param>

    <value>

    <dateTime.iso8601>{{EndTime}}</dateTime.iso8601>

    <rpc_schemaslib.RpcDateField></rpc_schemaslib.RpcDateField>

    <rpc_schemaslib.RpcDateOperator></rpc_schemaslib.RpcDateOperator>

    <dateTime.iso8601>{{StartTime}}</dateTime.iso8601>

    <rpc_schemaslib.RpcDateField></rpc_schemaslib.RpcDateField>

    <rpc_schemaslib.RpcDateOperator></rpc_schemaslib.RpcDateOperator>

    </value>

    </param>

  • Ich klnke mich hier mal ein.
    Das abrufen der Daten selbst ist gar kein Problem mehr, das schlimme ist, dass ich es einfach nicht hinbekomme, diese zeitlich zu begrenzen.
    Leider werde ich da aus der Doku auch noch nicht so richtig schlau. vielleicht hat da ja noch jemand Tipps parat, weil er/sie sich auch damit rum geschlagen hat.
    Sich mit dem Wireshark die Pakete anzuschauen hat wegen der Verschlüsselung der Daten nicht so richtig gut funktioniert. (das war noch so ein versuch von mir)

  • Hi,

    zu der Frage mit den Parametern bei RpcSchemas.Generate:

    Der dritte Parameter ist ein Struct, also so etwas wie ein Objekt, das mehrere Properties und Werte enthält. Die Datumsangaben sind dabei ISO 8601 Strings und die anderen Eigenschaften sind Enums - die werden einfach als Integer angegeben. Die Werte für die Enums findet ihr hier in der Doku: RpcGenerateOptions



    Für eure Auswertung werdet ihr vermutlich andere Parameter verwenden (z.B. Start-Operator "greater or equal" usw.). Wenn Properties eines Structs den Wert 0 oder leerer String haben, kann man sie auch weglassen, der Server nimmt dann den entsprechenden leeren Wert als Default. Die Filterung mit Start- und EndDate funktioniert so: das Date gibt den Zeitpunkt an, das Field gibt an, welche Element-Eigenschaft betrachtet wird (Erstellt, Bearbeitet am, Datum von, Datum bis) und der Operator gibt an, ob das Element-Datum kleiner, größer usw. als das angegebene Filter-Datum sein muss.


    Bei dem Generate-Call bekommt ihr vermutlich zunächst eine Fehlermeldung der Art "Missing lock (requested report with ID 7 is not locked)". Das liegt daran, dass der Report, für den ihr das Diagramm erzeugt, vor dem Generate-Call gesperrt und anschließend entsperrt werden muss. D.h. ihr müsste vor dem Generate noch ein RpcReports.Lock und danach ein RpcReports.Unlock machen, jeweils mit der ID des Reports.

    Wichtig: den Unlock müsst ihr auch im Fehlerfall machen, sonst bleibt das Element im GREYHOUND Server gesperrt. Am besten verwendet ihr dafür eine try-finally Struktur o.ä.:

    Code: (Pseudocode)
    1. RpcReports.Lock(reportId);
    2. try {
    3. result = RpcSchemas.Generate(schemaId, reportId, generateOptions);
    4. } finally {
    5. RpcReports.Unlock(reportId);
    6. }