Enaio 9.10: Variantenverwaltung / Bereinigung von nicht mehr benötigten inaktiven Varianten

Hallo zusammen,

der Screenshot zeigt exemplarisch ein Dokument mit mehreren Varianten:

image003

Ich bin auf der Suche nach einer Lösung die es ermöglicht bei einem enaio Dokument die inaktiven Varianten zu bereinigen (gerne per Job, Tool oder Aktion).

Es soll nur noch die aktive Variante (Haken) existieren, auch das ursprüngliche Original soll „verschwinden“ und an dessen Stelle soll die aktive Variante treten.

Hattet Ihr zu diesem Thema schon einmal eine ähnliche Anfrage oder eine Idee wie man hier vorgehen könnte? :slight_smile:

Vielen Dank im Voraus und viele Grüße
Flo

1 Like

Hallo @fb, ja, leider kann der Job DMS.XmlDelete das ja nicht so richtig gut:

xml = XmlElement.from_object("DMSData", {
    "Archive": {
        "@internal_name": "Test",
        "ObjectType": {
            "@internal_name": "WTest",
            "Object": {
                "@object_id": 751,
                "@variantparent_id": 753
            }
        }
    }
})

result = client.execute(Job(Jobs.DMS_XMLDELETE, Flags=0, Options=Options(), XML=xml))
print(result)

Ergebnis:

Unable to delete inactive original 
[...]
A general error occurred while calling the job to delete the specified object.oxjobdms

Aber der std.DeleteObject sollte es können, d. h. wenn man eine Schleife über die Variantendokumente macht, sollte es IMHO gehen:

from ecmind_blue_client import Job, Jobs
from ecmind_blue_client.tcp_client import TcpClient

client = TcpClient(
    hostname="enaio",
    port=4000,
    appname=__file__,
    username="root",
    password="optimal",
)

result = client.execute(
    Job(
        Jobs.STD_DELETEOBJECT,
        sDeleteMethod="Recycle",
        dwObjectID=755,
        dwObjectType=262145,
        dwParentID=0,
        dwParentType=0,
    )
)

print(result)

Vorher

vorher

Nachher

nachher

Bleibt noch die Frage, woher man die IDs kennt, das könnte brav per API oder aber auch weniger brav per SQL etc. bestimmt werden.

Wie viele Dokumente sind denn zu untersuchen/im Schrank vorhanden?

Ich möchte noch anmerken, dass std.DeleteObject auf alle Ebenen des Baums (bis auf die aktive Variante) angewendet werden muss. Wenn man etwas in der Mitte löscht, geht die Verbindung zum Ursprungsobjekt verloren.

Es handelt sich um knapp 10.000 Dokumente … das mit dem brav überlege ich mir noch :slight_smile:

Vielen Dank für deine Hinweise und den Test :slight_smile: , ich werde das mal in unserem Testsystem so ausprobieren.

Merci und Grüße
Flo