Metafacture - Fix - Add 035

Hallo,

ich versuche gerade, einen Metafacture Fix zuschreiben, aber es funktioniert nicht so, wie ich mir das vorstelle.

Input Datei ist MACRXML Format.
Jeder Datensatz enthält das Feld 001. Die Felder 035 sind variabel: Feld 035 kann kein Mal, ein Mal oder mindestens zwei Mal vorkommen.
Mein Ziel ist es, den Wert von 001 als Feld 035 (mit Präfix) im Datensatz hinzuzufügen.

Mein erstellter Code funktioniert nur, wenn der Datensatz kein Feld 035 oder mindestens zwei Felder 035 hat. Wenn 035 nur einmal vorkommt, kommt es zu einem Fehler:

org.metafacture.framework.MetafactureException: Entity too short.Got a string ('$append') of length 7.Expected a length of 5 (field + indicators).
at org.metafacture.biblio.marc21.MarcXmlEncoder$Encoder.startEntity (MarcXmlEncoder.java:325)
...

Kann jemand beim Code mir helfen? → Der (kaputte) Workflow im Playground

Hallo Elona,

das Problem ist, dass $append nur mit Arrays funktioniert. Und wenn 035 nur einmal vorkommt, wird daraus nicht automatisch ein Array gemacht. Das musst du selbst erledigen:

unless is_array("035  ")
  move_field("035  ", "@035")
  add_array("035  ")
  move_field("@035", "035  .$append")
end

Hoffe, das hilft.

Viele Grüße,
Jens

Hallo Jens,

vielen Dank für den Code! Es funktioniert!

Der Workflow im Playground 1
Der Workflow im Playground 2

Viele Grüße
Elona