Erweiterung eines Spool-Handlers in DocBridge Pilot

Die Spool-Handler in DocBridge Pilot unterstützen nicht immer alle Funktionalitäten von DocBridge Mill. So fehlt zum Beispiel dem Barcode–Handler die Möglichkeit, das Encoding sowie Breite und Länge einer Datamatrix anzugeben.
Am folgenden Beispiel des Barcode-Handlers wird gezeigt, wie man zum einen über einen Eintrag in der Datei 'custompu.xsd' und zum anderen über die Benutzung der neuen Parameter im Barcode-Handler 'BarcodeHandler.js' diese Erweiterung vornimmt.

In der Datei 'custompu.xsd' wird die Erweiterung zwischen den Zeilen

<xs:redefine schemaLocation="ProcessUnit.xsd">

und

</xs:redefine>

eingetragen. In diesem Fall erweitert man den ComplexType Barcode um die drei Parameter 'BarcodeEncoding', 'Columns' und 'Width'. Der Code für die Erweiterung sieht folgendermaßen aus:

<xs:complexType name="Barcode">
  <xs:complexContent>
    <xs:extension base="Barcode">
      <xs:sequence>
        <xs:element name="BarcodeEncoding"
        type="BarcodeEncodingSimpleType" default="BASE256" minOccurs="0"/>
        <xs:element name="Columns" type="xs:int" minOccurs="0" />
        <xs:element name="Rows" type="xs:int" minOccurs="0" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

Für das Encoding wurde eine Auswahlliste 'BarcodeEncodingSimpleType' angegeben. Diese muss nach

</xs:redefine>

ebenfalls definiert werden. Die Definition dieser Auswahlliste entspricht dem folgenden Code:

<xs:simpleType name="BarcodeEncodingSimpleType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="BASE256" />
    <xs:enumeration value="ASCII" />
    <xs:enumeration value="C40" />
  </xs:restriction>
</xs:simpleType>

Damit diese Parameter nun auch im Handler angezogen werden, muss der Original-Handler überladen werden. Dazu kopiert man den mitgelieferten Handler 'BarcodeHandler.js' aus dem Verzeichnis '{DocBridgePilot-Installationspfad}/dbpilot/bin/java/apache-tomcat-5.5.29/webapps/docpilot2/WEB-INF/classes/processunit/2.11/scripts/outputprofile' in das Verzeichnis '{DocBridgePilot-Projekt}/customscripts/outputprofile'

1. Übernehmen der Werte:

this.bc_rotation=(conf.Rotation) ? parseInt(conf.Rotation) : 0;
this.bc_encoding=(conf.BarcodeEncoding) ? conf.BarcodeEncoding : "";
this.bc_columns=(conf.Columns) ? parseInt(conf.Columns) : 0;
this.bc_rows=(conf.Rows) ? parseInt(conf.Rows) : 0;
this.generateBarcodeContentHandler=(conf.generateBarcodeContentHandler) ?
conf.generateBarcodeContentHandler : false;

2. Verarbeiten der Werte:

var bar = new Barcode();
:
if …
} else {
:
:
}
// get the encoding
if (typeof this.bc_encoding != 'undefined' &amp;&amp; this.bc_encoding != '') {
 switch (this.bc_encoding)
 {
 case "BASE256" : bcEncoding=Constants.Barcode.DataMatrixEncoding.Base256;
 break;
 case "ASCII" : bcEncoding=Constants.Barcode.DataMatrixEncoding.ASCII;
 break;
 case "C40" : bcEncoding=Constants.Barcode.DataMatrixEncoding.C40;
 break;
 }
}
if (doLog) logMsg( "DBP4353I 'BarcodeHandler.processPage' barcode content: "+tmpstring);
if (typeof tmpstring != 'undefined' &amp;&amp; tmpstring != '') {
:
if (doLog) logMsg( "DBP4353I 'BarcodeHandler.processPage' barcode MatixDimensions: "+this.bc_rows+"rows, "+this.bc_columns+"columns");
bar.setDataMatrixDimensions(this.bc_rows,this.bc_columns);

if (typeof bcEncoding != 'undefined') bar.setDataMatrixEncoding(bcEncoding);
:
bar.setDataString(tmpstring);
:

Auf diese Weise lassen sich die Spool-Handler im DocBridge Profiler um Parameter erweitern, die somit einfach über die Oberfläche konfiguriert werden können.

Zurück