Ankündigung

Einklappen
Keine Ankündigung bisher.

Groovy Prozess Fremddaten

Einklappen
X

Groovy Prozess Fremddaten

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Groovy Prozess Fremddaten

    Hallo liebe Community,


    ich bin wieder auf der Suche nach Unterstützung in Groovy.
    Ich kopiere derzeit aus unserem ERP-System Daten nach Intrexx. Dabei nutzte ich einen Global Timer und darauf aufbauen ein Groovy-Skript.

    Anschließend laufe ich je nach Pfad in eine Datengruppenaktion indem ich die Daten hinzufüge oder ändere.

    Wie überall können natürlich auch Einträge im ERP-System gelöscht werden, die dann auch in Intrexx gelöscht werden sollen.
    Leider bekomme ich dies mit dem bestehenden Fall nicht abgebildet.
    Meine Idee war nun eine neue Abfrage zu erstellen, in der geprüft wird ob die Anzahl von Tabelle A größer ist als Tabelle B und diesen übrigen Eintrag dann zu löschen.
    Leider lösche ich dann einfach alles.

    import de.uplanet.lucy.server.workflow.event.*
    import de.uplanet.scripting.groovy.util.Safely


    def conn = g_dbConnections.systemConnection
    def stmt = null
    def iLid = g_record["PK GUID Fremddatengrupe"].value /* datafield (PK) ID <integer> */

    try{
    stmt = g_dbQuery.prepare(conn, "Delete FROM DATAGROUP('GUID5') WHERE ERPID> ?")

    stmt.setInt(1, iLid)
    stmt.executeUpdate()
    stmt = Safely.close(stmt)
    }
    finally{
    stmt = Safely.close(stmt)
    }


    Vielleicht habt ihr ja eine Idee wo der Fehler liegt.

    Vielen Dank und Grüße
    Angelina
    Angehängte Dateien

  • #2
    Hey Angelina,
    hat es einen bestimmten Grund warum du nicht:
    - live auf die Daten zugreifst, sondern diese kopierst
    - fürs kopieren nicht die Integration nutzt?
    Die kann im Standard schon alle Daten überschreiben und somit Ziel und Quelle synchronisieren

    Besten Gruß.
    Henning

    Kommentar


    • #3
      Hallo Henning,

      da es nur wenige "Grunddaten" sind, werden diese nur kopiert und dann in Intrexx weiter angereichert.
      Die Integration wurde ursprünglich genutzt, da wir aber von ODBC kommen wird ein Datentyp (Blob) nicht richtig umgewandelt, sodass es keine Einträge gibt. Deshalb musste man über einen Prozess gehen.
      Viele Grüße
      Angelina

      Kommentar


      • #4
        Ah, ok!
        ich hätte das evtl. einfach per Intregration übernommen und dann die Blob-Felder per Groovy upgedated.
        Egal.

        Dein Code hier verstehe ich nicht ganz:
        Code:
        import de.uplanet.lucy.server.workflow.event.*
        import de.uplanet.scripting.groovy.util.Safely
        
        
        def conn = g_dbConnections.systemConnection
        def stmt = null
        def iLid = g_record["PK GUID Fremddatengrupe"].value /* datafield (PK) ID <integer> */
        
        try{
        stmt = g_dbQuery.prepare(conn, "Delete FROM DATAGROUP('GUID5') WHERE ERPID> ?")
        
        stmt.setInt(1, iLid)
        stmt.executeUpdate()
        stmt = Safely.close(stmt)
        }
        finally{
        stmt = Safely.close(stmt)
        }
        Du nimmst die aktuelle ID aus dem g_record und löscht alle Einträge, welche größer als die sind?
        warum?
        Wie ich dein Problem verstehe, müsste das so aussehen:
        Entweder: du löscht alle Datensätze und lädst die jedes mal neu aus dem ERP.
        (das kann bei evtl referenzen natürlich zu problemen führen.
        oder:
        du nimmst deine aktuelle ID (Intrexx) und guckst ob es die in den Fremddaten gibt.
        Gibt es die ID nicht -> lösch den Datensatz.

        Bringt dich das weiter?
        Besten Gruß.
        Henning

        Kommentar


        • #5
          Hallo Henning,

          der Plan war abzugleichen, ob es mehr Einträge in Intrexx gibt als im ERP System und dann den übrigen Eintrag zu löschen.
          Den Ansatz muss ich in dem Fall nochmal korrigieren.
          Danke für den Tipp.

          Viele Grüße
          Angelina

          Kommentar

          Lädt...
          X