CIB documentServer technical documentation (EN)


Appendix

Überblick CIB Module
Beispielaufruf SOAP Webservice mit VB.net
Beispielaufruf SOAP Webservice mit C#
Beispiel für einen XML request
Beispiel für eine XML response
Fehlercodes der Socketserver
Fehlercodes des CIB documentserver
Fehlercodes des Servermanagers
WSDL Webservice Description


Overview CIB Module

Components

Software scope

CIB job

WIN32

CibJob32.dll

CIB Job-DLL for WIN32, interface to the application

CibJob32.lib

Library for CIB job

CibJob.h

Include file for CIB job

CoMod.h

General include file for CoMod modules

Linux/Unix

libcibjobux.so

shared library for Unix(e)

libcibjobux.sl

shared library for HP Ux

CIB merge

WIN32

cibmrg32.dll

CIB merge-DLL für Win32, interface to the application

Linux/Unix

libcibmrgux.so

shared library für unix Plattformen

libcibchart.so

loader for CIB chart

libcibscan.so

 

libzlib.so

 

libgcc_s.so

 

libstdc++.so.6

 

CIB format/output

WIN32

CibPrt32.dll

CIB format/output-DLL for WIN32, interface to the application

Unix

libcibprtux.so

shared library for Unix(e)

libcibprtux.sl

shared library for HP Ux

CIB pdf toolbox

CibPdf32.dll

CIB pdf toolbox-DLL for Win32, interface to the application

CibPdf32.lib

Library for CIB pdf toolbox

CibPdf32.h

Include file for CIB pdf toolbox

libcibpdfux.so

CIB pdf toolbox shared library for various Unix systems

libcibpdfux.sl

CIB pdf toolbox shared library for HP Unix systems

CIB mail

 

 

WIN32

CibMail32.dll

CIB mail-DLL for WIN32, interface to the application

CibMail32.lib

Library for CIB mail

CibMail.h

Include file for CIB mail

CoMod.h

General Include file for CoMod Module

Unix

libcibmailux.so

shared library for Unix(e)

libcibmailux.sl

shared library for HP Ux

CibDataCsv.dll

Zugriffs Dll for Csv Daten

CibDataXml.dll

Zugriffs Dll for Xml Daten

CIBCache.dll

Tool Dll

Xalan-C_1_5_0.dll

Tool Dll Xml

xerces-c_2_2_0.dll

Tool Dll Xml

CIB runshell

WIN32

cibrsh.exe

CIB runshell, Command line shell WIN32

Unix

cibrshux

CIB runshell, Command line shell for Unix(e)

Examples

 

jobs/basic

Examples of commands (recognizable by name)

jobs/customer

Real orders from CIB documentServer customers (anonymous)

jobs/examples

General examples of a technical nature

jobs/soap

Examples of Web Service Jobs

jobs/stylesheet

Examples for Namespaces and Schemes

templates

Rtf and Pdf template for the example

Job files



Example call SOAP Web service with VB.net

Example call Web service

Public
Class Form1
 
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
             Dim service As New de.cib.docserv.web.CibDocumentServer
             Dim request As New de.cib.docserv.web.Request
 
             Dim comodtype As New de.cib.docserv.web.ComodType
             Dim testjob As New de.cib.docserv.web.JobType
             Dim testjobs As New de.cib.docserv.web.JobsType
             Dim formatStep As New de.cib.docserv.web.StepType
             Dim formatProps(1) As de.cib.docserv.web.PropertyType
             Dim stepArray(2) As de.cib.docserv.web.StepType
             Dim comodArray(1) As Object
             Dim jobsArray(1) As de.cib.docserv.web.JobType
 
             Dim mergeStep As New de.cib.docserv.web.StepType
             Dim mergeProps(4) As de.cib.docserv.web.PropertyType
             mergeStep.name = "step1"
             mergeStep.command = "merge"
 
             mergeStep.properties = New de.cib.docserv.web.PropertiesType()
             mergeStep.properties.property = mergeProps
             mergeStep.properties.property(0) = New de.cib.docserv.web.PropertyType()
             mergeStep.properties.property(0).name = "-i"
             mergeStep.properties.property(0).Value = "Test.rtf"
 
             mergeStep.properties.property(1) = New de.cib.docserv.web.PropertyType()
             mergeStep.properties.property(1).name = "-h"
             mergeStep.properties.property(1).Value = "XML:$(inline)"
 
             mergeStep.properties.property(2) = New de.cib.docserv.web.PropertyType()
              mergeStep.properties.property(2).name = "-d"
             mergeStep.properties.property(2).Value = "//Data/Person"
 
             mergeStep.properties.property(3) = New de.cib.docserv.web.PropertyType()
             mergeStep.properties.property(3).name = "-l"
             mergeStep.properties.property(3).Value = "!merge.log"
 
             mergeStep.trace = "merge.log"
 
             formatStep.name = "step2"
             formatStep.command = "format"
 
             formatStep.properties = New de.cib.docserv.web.PropertiesType()
             formatStep.properties.property = formatProps
             formatStep.properties.property(0) = New de.cib.docserv.web.PropertyType()
             formatStep.properties.property(0).name = "OutputFormat"
             formatStep.properties.property(0).Value = "FormatPdf"
 
             testjob.steps = stepArray
             testjob.steps(0) = mergeStep
             testjob.steps(1) = formatStep
 
             comodtype.Items = comodArray
             testjobs.job = jobsArray
             testjobs.job(0) = testjob
             comodtype.Items(0) = testjobs
             comodtype.producer = "VB.net"
 
             request.Comod = comodtype
 
             Dim XmlString As String = "<Person><Vorname>Otto</Vorname><Name>Krause</Name><Strasse> Musterstrasse</Strasse><Nummer>1</Nummer><PLZ>12345</PLZ><Ort>Musterstadt</Ort></Person>"
             Dim xmldata As New System.Xml.XmlDocument
             xmldata.LoadXml(XmlString)
 
             request.Data = xmldata.DocumentElement
 
             Dim response As de.cib.docserv.web.Response
 
             response = service.generate(request)
 
             Dim jobResults As de.cib.docserv.web.JobResultsType
             jobResults = CType(response.Comod.Items(0), de.cib.docserv.web.JobResultsType)
             If (jobResults.jobresult(0).jobresultcode = 0) Then
                    ' Success
                    Dim stepData As de.cib.docserv.web.StepDataType
                    stepData = jobResults.jobresult(0).stepresults(1).stepdata
 
                    Debug.Print(stepData.mimetype)
                    Debug.Print(stepData.encoding)
 
                    ' TODO: Extract base64 encoded pdf from here: stepData.Value
             Else
                    ' A step failed
                    Debug.Print("Error " & jobResults.jobresult(0).jobresultcode & ": " _
                           & jobResults.jobresult(0).jobresulttext)
                    Debug.Print("Failed step(s): " _
                           & jobResults.jobresult(0).failed(0).name)
 
                    ' TODO loop step results to find error code of failed step.
                    ' TODO in case of merge extract content of trace property
             End If
 
       End Sub
End Class


Beispielaufruf SOAP Webservice mit C#

Example call Web service

using Webservice2.de.cib.docserv.web;
 

 
private void button1_Click(object sender, EventArgs e)
{
       CibDocumentServer service = new CibDocumentServer();
       Request request = new Request();
 
       StepType mergeStep = new StepType();
       StepType formatStep = new StepType();
       ComodType comodtype = new ComodType();
       JobsType testjobs = new JobsType();
       JobType testjob = new JobType();
       PropertyType[] formatProps = new PropertyType[1];
       StepType[] stepArray = new StepType[2];
       Object[] comodArray = new Object[1];
       JobType[] jobsArray = new JobType[1];
       PropertyType[] mergeProps = new PropertyType[4];
 
       mergeStep.name = "step1";
       mergeStep.command = "merge";
 
       mergeStep.properties = new PropertiesType();
       mergeStep.properties.property = mergeProps;
       mergeStep.properties.property[0] = new PropertyType();
       mergeStep.properties.property[0].name = "-i";
       mergeStep.properties.property[0].Value = "Test.rtf";
 
       mergeStep.properties.property[1] = new PropertyType();
       mergeStep.properties.property[1].name = "-h";
       mergeStep.properties.property[1].Value = "XML:$(inline)";
 
       mergeStep.properties.property[2] = new PropertyType();
       mergeStep.properties.property[2].name = "-d";
       mergeStep.properties.property[2].Value = "//Data/Person";
 
       mergeStep.properties.property[3] = new PropertyType();
       mergeStep.properties.property[3].name = "-l";
       mergeStep.properties.property[3].Value = "!merge.log";
 
       mergeStep.trace = "merge.log";
 
       formatStep.name = "step2";
       formatStep.command = "format";
 
       formatStep.properties = new PropertiesType();
       formatStep.properties.property = formatProps;
       formatStep.properties.property[0] = new PropertyType();
       formatStep.properties.property[0].name = "OutputFormat";
       formatStep.properties.property[0].Value = "FormatPdf";
 
       testjob.steps = stepArray;
       testjob.steps[0] = mergeStep;
       testjob.steps[1] = formatStep;
 
       comodtype.Items = comodArray;
       testjobs.job = jobsArray;
       testjobs.job[0] = testjob;
       comodtype.Items[0] = testjobs;
       comodtype.producer = "C#.net";
 
       request.Comod = comodtype;
 
       String xmlString = "<Person><Vorname>Otto</Vorname><Name>Krause</Name><Strasse>Musterstrasse</Strasse>
<Nummer>1</Nummer><PLZ>12345</PLZ><Ort>Musterstadt</Ort></Person>";
       System.Xml.XmlDocument xmldata = new System.Xml.XmlDocument();
       xmldata.LoadXml(xmlString);
 
       request.Data = xmldata.DocumentElement;
 
       Response response = service.generate(request);
 
       JobResultsType jobResults = (JobResultsType)response.Comod.Items[0];
       if (jobResults.jobresult[0].jobresultcode == 0) {
             // Success
             StepDataType stepData = jobResults.jobresult[0].stepresults[1].stepdata;
 
             System.Console.Out.WriteLine(stepData.mimetype);
             System.Console.Out.WriteLine(stepData.encoding);
 
             // TODO: Extract base64 encoded pdf from here: stepData.Value
       }
       else {
             // A step failed
             System.Console.Out.WriteLine("Error " + jobResults.jobresult[0].jobresultcode + ": "
             + jobResults.jobresult[0].jobresulttext);
             System.Console.Out.WriteLine("Failed step(s): "
             + jobResults.jobresult[0].failed[0].name);
 
             // TODO loop step results to find error code of failed step.
             // TODO in case of merge extract content of trace property
       }
}


Example for an XML request

<?xml
version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <soap:Body>
             <Generate xmlns="http://www.cib.de/schemas/soap/job/1.1">
                    <Comod xmlns="">
                           <producer>VB.net</producer>
                           <jobs>
                                  <job>
                                        <steps>
                                               <step name="step1" command="merge">
                                                      <properties>
                                                             <property name="-i">
                                                                   Test.rtf
                                                             </property>
                                                            <property name="-h">
                                                                   XML:$(inline)
                                                             </property>
                                                             <property name="-d">
                                                                   //Data/Person
                                                             </property>
                                                             <property name="-l">
                                                                   !merge.log
                                                             </property>
                                                      </properties>
                                                      <trace>merge.log</trace>
                                               </step>
                                               <step name="step2" command="format">
                                                      <properties>
                                                             <property name="OutputFormat">
                                                                   FormatPdf
                                                             </property>
                                                      </properties>
                                               </step>
                                        </steps>
                                  </job>
                           </jobs>
                    </Comod>
                    <Data xmlns="">
                           <Person>
                                  <Vorname>Otto</Vorname>
                                  <Name>Krause</Name>
                                  <Strasse>Musterstrasse</Strasse>
                                  <Nummer>1</Nummer>
                                  <PLZ>12345</PLZ>
                                  <Ort>Musterstadt</Ort>
                           </Person>
                    </Data>
             </Generate>
       </soap:Body>
</soap:Envelope>


Example for an XML response

<?xml
version="1.0" encoding="UTF-8" standalone="no" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
http://www.cib.de/schemas/job/1.1 http://www.cib.de/schemas/job/1.1/cibjob.xsd
http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/
http://www.cib.de/schemas/soap/job/1.1 http://www.cib.de/schemas/soap/job/1.1/cibjobsoap.xsd
">
 
       <soap:Body>
             <cibjobsoap:GenerateResult
                    xmlns:cibjobsoap="http://www.cib.de/schemas/soap/job/1.1">
                    <Comod xmlns="">
                           <!--CIB job Ausgabe 07.11.2007 10:01:15 -->
                           <version>1.1</version>
                           <producer>CIB job 1.3.12b</producer>
                           <job-results>
                                  <job-result name="">
                                        <job-result-code>0</job-result-code>
                                        <job-result-text>Erfolgreich</job-result-text>
                                        <job-timing>0:00:00,156</job-timing>
                                        <!--Liste aller Ergebnisse-->
                                        <step-results>
                                               <!-- step1 -->
                                               <step-result name="step1">
                                                      <step-result-code>0</step-result-code>
                                                      <step-result-text>
                                                             Erfolgreich
                                                      </step-result-text>
                                                      <step-timing>0:00:00,015</step-timing>
                                               </step-result>
                                               <!-- step2 -->
                                               <step-result name="step2">
                                                      <step-result-code>0</step-result-code>
                                                      <step-result-text>
                                                             Erfolgreich
                                                      </step-result-text>
                                                      <step-timing>0:00:00,141</step-timing>
                                                      <step-data encoding="base64"
                                                             mimetype="application/pdf">
JVBERi0xLjQNCiXi48/TCjYgMCBvYmoKPDwKL0xlbmd0aCA3IDAgUgovRmls
dGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJydjb0KwjAQgPc8xY26nLkk
bdNRQR1EBMkLVJsKDgpJiuDTmx+qs70b7rif7yOgmO7GKDfnPdsYxiFlHK52
HEggBzMwjjwGmCujVN7xyrh49mINR11BU7WpmB4W64u3j966JZg725qE/Isk
BYpCOoXwhIwRCqWC9JoXB9eN3s4VkEZVBMfRB+t8cJ33tphqja3+mWiuhCus
i4SEjLrMkTJxv/BJ3/Vh0nwAR/BbawplbmRzdHJlYW0KZW5kb2JqCjcgMCBv
YmoKMTc1DQplbmRvYmoKNSAwIG9iago8PAovVHlwZSAvUGFnZQovUGFyZW50
IDMgMCBSCi9NZWRpYUJveCBbMCAwIDU5NSA4NDJdCi9SZXNvdXJjZXMgOSAw
IFIKL0NvbnRlbnRzIFs2IDAgUiBdCj4+CmVuZG9iago0IDAgb2JqCjw8Ci9U
eXBlIC9DYXRhbG9nCi9QYWdlcyAzIDAgUgo+PgplbmRvYmoKMTAgMCBvYmoK
PDwNCi9Qcm9kdWNlciAoQ0lCIGZvcm1hdC9wZGYgNS4zLjIwMyAtIHd3dy5j
aWIuZGUpCi9BdXRob3IgKEhvbGdlcikKL1RpdGxlIChBYnNlbmRlcikKL0Ny
ZWF0aW9uRGF0ZSAoRDoyMDA3MTEwNzEwMDExNSswMScwMCcpCi9Nb2REYXRl
IChEOjIwMDcxMTA3MTAwMTE1KzAxJzAwJykKPj4KZW5kb2JqCjEgMCBvYmoK
PDwgL0YwIDggMCBSID4+CmVuZG9iago5IDAgb2JqCjw8L0ZvbnQgMSAwIFIg
IC9Qcm9jU2V0IFsvUERGL1RleHRdID4+CmVuZG9iagozIDAgb2JqCjw8Ci9U
eXBlL1BhZ2VzCi9Db3VudCAxCi9LaWRzIFsgNSAwIFIgXQo+PgplbmRvYmoK
OCAwIG9iago8PAovVHlwZS9Gb250Ci9TdWJ0eXBlL1RydWVUeXBlCi9OYW1l
L0YwCi9CYXNlRm9udC9UaW1lc05ld1JvbWFuUFNNVAovRW5jb2RpbmcvV2lu
QW5zaUVuY29kaW5nCi9GaXJzdENoYXIgMzIKL0xhc3RDaGFyIDExNwovV2lk
dGhzIFsgMjUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAw
IDUwMCA1MDAgNTAwIDUwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNzIyIDAg
MCAwIDAgMCAwIDAgMCAwIDcyMiAwIDg4OSAwIDcyMiAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgNDQ0IDUwMCAwIDUwMCA0NDQgMCAwIDAg
MCAwIDAgMCAwIDUwMCA1MDAgMCAwIDMzMyAzODkgMjc4IDUwMCBdCi9Gb250
RGVzY3JpcHRvciAxMSAwIFIKPj4KZW5kb2JqCjExIDAgb2JqCjw8Ci9UeXBl
L0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZS9UaW1lc05ld1JvbWFuUFNNVAov
RmxhZ3MgMzQvRm9udEJCb3ggWy03NiAtMjE2IDEwMDkgOTMzXQovQXNjZW50
IDg5MS9EZXNjZW50IC0yMTYKL0l0YWxpY0FuZ2xlIDAvQ2FwSGVpZ2h0IDEy
MDAvU3RlbVYgODAKPj4KZW5kb2JqCnhyZWYNCjAgMTINCjAwMDAwMDAwMDIg
NjU1MzUgZg0KMDAwMDAwMDYyMiAwMDAwMCBuDQowMDAwMDAwMDAwIDAwMDAw
IGYNCjAwMDAwMDA3MDcgMDAwMDAgbg0KMDAwMDAwMDM5MiAwMDAwMCBuDQow
MDAwMDAwMjg1IDAwMDAwIG4NCjAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAw
MDI2NSAwMDAwMCBuDQowMDAwMDAwNzY1IDAwMDAwIG4NCjAwMDAwMDA2NTMg
MDAwMDAgbg0KMDAwMDAwMDQ0MSAwMDAwMCBuDQowMDAwMDAxMTUzIDAwMDAw
IG4NCnRyYWlsZXIKPDwNCi9TaXplIDEyCi9Sb290IDQgMCBSCi9JbmZvIDEw
IDAgUgovSURbPGY4ZDVmNjA1YjEzNjBiMGRmZmVjZjg2YWU1ZGVhMmFhPjxm
OGQ1ZjYwNWIxMzYwYjBkZmZlY2Y4NmFlNWRlYTJhYT5dCj4+CnN0YXJ0eHJl
ZgoxMzI3CiUlRU9GCg==
                                                      </step-data>
                                               </step-result>
                                        </step-results>
                                  </job-result>
                           </job-results>
                    </Comod>
             </cibjobsoap:GenerateResult>
       </soap:Body>
 
</soap:Envelope>


Error codes of the Socketserver

The specified return values can be read in the logs of the application server (processor native CIB socketserver process at localhost:5000x terminated with exit code nnn) as well as in the socketserver.log if necessary.

The following list gives an overview of possible error returns by the socket server.

The error numbers have the following meaning:

Return value

Description of the return values

414

SocketServer has terminated because the maximum execution time has been exceeded. See en.cib.docserv.job.MaxJobExecutionTime

440

SocketServer has received termination signal (TERMINATION MESSAGE)

441

SocketServer: Too few or no arguments (NOARGUMENTS)

442

SocketServer: Non-permitted port number (INVALIDPORT)

443

SocketServer: CIB Job Library not available (JOBLIBRARYNOTAVAILABLE)

444

SocketServer: Invalid Content Type (INVALIDCONTENTTYPE)

445

SocketServer: general error with description (EXCEPTION). For example a socket timeout due to too long processing time, or other socket errors.

446

SocketServer: general error (UNEXPECTEDEXCEPTION)

447

SocketServer: The url in the http header is invalid. Allowed are /job and /terminates (INVALIDREQUESTURL)

448

SocketServer: Due to the idle time ("IdleShutdownTime") the SocketServer has stopped.

454

SocketServer: Maximum working memory reached. See en.cib.docserv.socket.MaxMemory.

458

SocketServer: Maximum working memory reached. Error during allocation ("malloc()"). See de.cib.docserv.socket.MaxMemory.

459

SocketServer: Maximum working memory reached. Error during allocation ("new"). See de.cib.docserv.socket.MaxMemory.

457

SocketServer should be (re)configured (CONFIGURATIONMESSAGE)

 

Note: Under Unix/Linux it can happen that error codes are output shifted by a multiple of 256.

Example: The return value 440 is thus output as 184 or even as -72.


Error codes of the CIB documentserver

The following error codes can occur via the call interface of the CIB documentServer. The specified error codes are contained in the XML response of the CIB documentServer and originate either from CIB job or from the CIB documentServer Java framework.

Return value

Description of the return values

401

Job: Error during XML parsing. All Xerces Errors (XMLPARSER)

402

Job: Not implemented (NOTIMPLEMENTED)

403

Job: Internal error (INTERNALPROGRAMERROR)

404

Job: An error was reported by an execution step (JOBEXECUTIONFAILED)

405

Job: Empty input (INPUTFILEEMPTY)

406

Job: The information for a job or step is incorrect.  (INVALIDJOB)

409

Job: No input (NOINPUTFILE)

410

Java: Exception occurred in Java (JAVAEXCEPTION). Deprecated.

411

Job: A step was not even executed due to a previous error (STEPNOTEXECUTED)

412

Job: Maximum execution time exceeded. See en.cib.docserv.job.MaxJobExecutionTime

413

Job: Maximum execution time exceeded. See en.cib.docserv.job.MaxJobExecutionTime

414

Job: Maximum execution time exceeded. See en.cib.docserv.job.MaxJobExecutionTime

415

Job: Reserved

433

Java: The SocketServer hangs due to a general resource problem (e.g. maximum memory of the operating system exceeded). The SocketServer is automatically restarted after the socket timeout is exceeded. See en.cib.docserv.job.SocketTimeout

434

Java: No response from the socket server after the time specified in the SocketTimeout property has expired. The SocketServer is restarted automatically. See en.cib.docserv.job.SocketTimeout

435

Java: Exitcode of natives could not be read (NOEXITCODE)

436

Java: DocumentServer: no asynchronous job result available after several tries (ASYNCRESULTMISSING)

437

Java: General exception (GENERALEXCEPTION)

438

Java: No server available (NOSERVER)

439

Java: Timeout when reading from native socket (TIMEOUT)

 

LibreOffice-Konverter:

1000

invalid license (not supported)

1001

LibreOffice could not be loaded

1002

unknown error (not yet supported)

1003

general I/O error (not yet supported)

1004

Error while loading the InputFile

1005

Error while saving the OutputFile

1006

invalid parameter


 

Error codes of the Servermanager

The specified return values are triggered by the native server manager if it is used (not recommended).

 


Return value

Description of the return values

450

ServerManager has received termination signal (TERMINATIONSIGNAL)

451

ServerManager: Too few or no arguments (NOARGUMENTS)

452

ServerManager: Wrong argument (INVALIDARGUMENT)

453

ServerManager: Non-permitted port number (INVALIDPORT)

454

Reserved

455

Server manager: general error with description (EXCEPTION)

456

Server manager: general error (UNEXPECTEDEXCEPTION)


WSDL Webservice Description

This section contains the WSDL file for the SOAP interface.

The current version can be obtained at any time from http://www.cib.de/schemas/soap/job/1.1/Cib­Document­Server.wsdl.

<?xml version="1.0" encoding="UTF-8"?>
<!--
        CIB job/SOAP XML Schema/WSDL 1.1 for CIB job from Version 1.4.x. onwards
       
        (c) CIB software GmbH 2005-2006
        $Revision: 2 $
       
        INTRODUCTION:
        This schema formally describes the XML structure of the SOAP Envelope, into which
        CIB job job files and job result files can be embedded.
       
        EXAMPLE:
        A SOAP message to execute the "generate" operation contains, in addition to the
        Envelope a "Generate" element that contains the nodes "Comod" and "Data".
        The namespaces are left out.        <envelope>
               <header/>
               <body>
                       <Generate>
                              <Comod>
                                      <jobs>...</jobs>
                              </Comod>
                               <Data>...</Data>
                       </Generate>
               </body>
        </envelope>
       
        And the response:
       
        <envelope>
               <header/>
               <body>
                       <GenerateResult>
                              <Comod>
                                      <job-results>...</job-results>
                              </Comod>
                       </GenerateResult>
               </body>
        </envelope>
       
        $Header: /CIB documentserver/jobs/soap/cibjob.wsdl 2    7.08.06 12:15 Georg $
-->
 
<wsdl:definitions name="CibDocumentServer"
targetNamespace="http://www.cib.de/schemas/soap/job/1.1"
xmlns:soapjob="http://www.cib.de/schemas/soap/job/1.1"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
        <!-- Define types for the messages -->
        <wsdl:types>
               <xsd:scheme
               targetNamespace="http://www.cib.de/schemas/soap/job/1.1"
               xmlns:pref="http://www.cib.de/schemas/job/1.1">
                      
                       <!-- Import the cibjob syntax -->
                       <xsd:import namespace="http://www.cib.de/schemas/job/1.1"
                       schemaLocation="http://www.cib.de/schemas/job/1.1/cibjob.xsd">
                       </xsd:import>
                      
                       <!-- Define the structure of the messages -->
                       <xsd:complexType name="Request">
                              <xsd:sequence>
                                      <xsd:element name="Comod" type="pref:ComodType">
                                      </xsd:element>
          <xsd:element name="Data" type="pref:UserData"></xsd:element>
                               </xsd:sequence>
                       </xsd:complexType>
                       <xsd:complexType name="Response">
                              <xsd:sequence>
                                      <xsd:element name="Comod" type="pref:ComodType">
                                      </xsd:element>
                               </xsd:sequence>
                       </xsd:complexType>
                      
                       <!-- These two element names appear in the body of Request and
                       Response, and each has a comod element. -->
                       <xsd:element name="Generate" type="soapjob:Request" />
                       <xsd:element name="GenerateResult" type="soapjob:Response" />
 
               </xsd:schema>
        </wsdl:types>
 
        <!-- Declare messages of the operation described below. -->
        <wsdl:message name="generateMessage">
               <wsdl:part name="parameter"
                       element="soapjob:Generate" />
        </wsdl:message>
        <wsdl:message name="generateResultMessage">
               <wsdl:part name="parameter"
                       element="soapjob:GenerateResult" />
        </wsdl:message>
 
        <!-- Declare concrete operation -->
        <wsdl:portType name="cibjobInterface">
               <wsdl:operation name="generate">
                       <wsdl:input message="soapjob:generateMessage" />
                       <wsdl:output message="soapjob:generateResultMessage" />
               </wsdl:operation>
        </wsdl:portType>
 
        <!-- Declare concrete operation. Because of use="literal", the SOAP
        Messages the elements assigned to the messages (Generate and ~Result) expected. -->
        <wsdl:binding name="cibjobBinding" type="soapjob:cibjobInterface">
               <soap:binding style="document"
               transport="http://schemas.xmlsoap.org/soap/http" />
               <wsdl:operation name="generate">
                       <soap:operation
                       soapAction="http://www.cib.de/soap/job/generate" />
                       <wsdl:input>
                              <soap:body use="literal" />
                       </wsdl:input>
                       <wsdl:output>
                              <soap:body use="literal" />
                       </wsdl:output>
               </wsdl:operation>
        </wsdl:binding>
       
        <!-- Declare the service to the concrete operations -->
        <wsdl:service name="CibDocumentServer">
               <wsdl:port binding="soapjob:cibjobBinding"
                       name="cibjobService">
                       <!-- The implementing address -->
                       <soap:address location="http://desiderata:8080/CibDocumentServer/soap/Generate" />
               </wsdl:port>
        </wsdl:service>