2019.06 2020.06

Servlets zur Manipulation von MyCoRe-Objekten

Neben kompletten Workflow-Szenarien gibt es auch eine Reihe einzelner Servlets, aus denen sich Arbeitsabläufe zur Bearbeitung der Metadaten und digitalen Objekte ableiten lassen. Dieser Abschnitt beschäftigt sich mit dem Aufruf dieser Servlets.

Das MCRCreateObjectServlet / MCRUpdateObjectServlet / MCRDeleteObjectServlet

Als erste Funktionalitäten sollen Create , Update und Delete von MyCoRe-Metadaten-Objekten ( MCRObject ) beschrieben werden.

CREATE

Für ein neu anzulegendes Objekt kann innerhalb der HTML-Navigation in der Anwendung die entsprechende XEditor-Seite aufgerufen werden. Dabei ist es möglich, dem Aufruf eine MyCoRe-ProjektID mitzugeben, welche dann für das Generieren der MCRObjectID genutzt wird.

Der Codebaustein für Create ... href="https://www.mycore.de/editor_form_my_xed.xed?origin={ProjectID}" ... ruft ein XEditor-Formular auf und übergibt die ProjectID.

Innerhalb des Formulars sind dann Abschnitte für die Umsetzung der MCRObjectID und die Submit-Button vorzusehen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
...
  <xed:choose>
    <xed:when test="string-length($origin) &gt; 0">
      <xed:bind xpath="@ID" initially="{$origin}_work_00000000" />
    </xed:when>
    <xed:when test="xed:call-java('org.mycore.common.xml.MCRXMLFunctions','getCurrentUserAttribute','origin')">
      <xed:bind xpath="@ID" initially="{xed:call-java('org.mycore.common.xml.MCRXMLFunctions','getCurrentUserAttribute','origin')}_work_00000000" />
    </xed:when>
    <xed:otherwise>
      <xed:bind xpath="@ID" initially="{$MIR.projectid.default}_work_00000000" />
    </xed:otherwise>
  </xed:choose>
...
  <button type="submit" class="btn btn-default" xed:target="cancel">
    <xed:output i18n="button.cancel" />
  </button>
  <xed:choose>
    <!-- xed:when test="/mycoreobject/@ID = 'BachDigital_work_00000000'" -->
    <xed:when test="contains(/mycoreobject/@ID, '_00000000')">
      <button type="submit" class="btn btn-primary" xed:target="servlet" xed:href="CreateObjectServlet">
        <xed:output i18n="button.save" />
      </button>
    </xed:when>
    <xed:otherwise>
      <button type="submit" class="btn btn-primary" xed:target="servlet" xed:href="UpdateObjectServlet">
        <xed:output i18n="button.save" />
      </button>
    </xed:otherwise>
  </xed:choose>
...

UPDATE

Der Codebaustein für Update ... href="https://www.mycore.de/editor_form_my_xed.xed?id={MCRObjectID}" ... ruft ein XEditor-Formular auf und übergibt die MCRObjectID. Im editor_form_my_xed.xed sollten dann folgende Zeilen enthalten sein:

1
2
3
4
5
...
  <xed.cancel url="/receive/{$id}" />
  <xed.cancel url="/" />
  <xed.source url="mcrobject:{$id}" />
...

DELETE

Der Codebaustein für Delete ... href="https://www.mycore.de/servlets/object/delete?id={MCRObjectID}" ist recht simpel. Er ruft direkt das MCRDeletObjectServlet auf. Für Anwendunge ist es natürlich sinnvoll, hier noch eine Sicherheitsabfrage einzubauen.

Das MCRLockServlet

Das MCRLockServlet ist ein Wrapper um dem Update-Ablauf und soll sicher stellen, dass ein MyCoRe-Object nur von einem Nutzer gleichzeitig verarbeitet werden kann. Der Aufruf ist:

1
.../servlets/MCRLockServlet?url={my_update}.xed&amp;id={my_id}

Folgende Parameter sind anzugeben:

  • url - die URL der XEditor-Seite, welche aufzurufen ist.
  • id - MCRObjectID des Datenobjektes, welches verarbeitet werden soll.
  • action - (optional) lock oder unlock

Ein unlock erfolgt unter den Bidingungen:

  • Das Submit war erfolgreich.
  • Es erfolgte ein Abbruch der Verarbeitung (cancel).
  • Die Session für die verrabeitung ist abgebrochen.

Das MCRDerivateServlet

Mit Hilfe des MCRDerivateServlet können Manipulationen an den Derivaten vorgenommen werden. Mit dem todo ssetfile kann die Startdatei festgelegt werden. Mit sdelfile wird eine Datei aus dem Derivate gelöscht.

Syntax des Servlet-Aufrufes:

1
{$WebApplicationBaseURL}servlets/MCRDerivateServlet?derivateid={$derId}&amp;objectid={$objID}&amp;todo=ssetfile&amp;file={$fileName}

Beispiel des Servlet-Aufrufes:

1
http://localhost:8291/servlets/MCRDerivateServlet?derivateid=MIR_derivate_00000001&amp;objectid=MIR_mir_00000001&amp;todo=ssetfile&amp;file=myimage04.jpg
  • derivateid - die MyCoReID des derivates, welches bearbeitet werden soll.
  • objectid - die MyCoReID des Metadatenobjektes, zu dem das Derivate gehört.
  • todo - die Funktion, welche ausgeführt werden soll.
  • file - der Pfad zu der Datei, auf welche die Funktion ausgeführt werden soll.