Jobs are a central concept in Switch. Using the Web Service SDK, we can submit, download, replace, lock and unlock, and push (i.e. move to a checkpoint’s connection(s)) jobs.
To send jobs through SOAP, Switch uses DIME, and all attachments must be stored in a zip archive.
<soap:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:SubmitFile10>
<inEntry href="#id0"/>
<inSubmitData href="CE0B4222945833ED125480C7C1D7F25D" xsi:type="xsd:base64Binary"/>
</butterfly:SubmitFile10>
<multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="butterfly:SubmitEntry" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<flowId>7</flowId>
<submitPointId>1</submitPointId>
<jobName>info.txt</jobName>
<jobOrigin>/info.txt</jobOrigin>
<metadataXmlStr/>
</multiRef>
</soap:Body>
Where CE0B4222945833ED125480C7C1D7F25D points to a DIME attachment of a zip file.
<soap:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:SubmitFile10Response>
<outJobId/>
</butterfly:SubmitFile10Response>
</soap:Body>
Downloading or replacing a job is similar.
<soapenv:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:GetCheckpointJobInfo>
<flowId>7</flowId>
<checkPointId>4</checkPointId>
<jobId>0006J</jobId>
</butterfly:GetCheckpointJobInfo>
</soapenv:Body>
The resulting JobStatus element contains the possible outgoing connections, e.g.:
<soapenv:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:GetCheckpointJobInfoResponse>
<jobInfo>
<jobAllowMultipleOutputs>false</jobAllowMultipleOutputs>
<jobEnableReportViewing>false</jobEnableReportViewing>
<jobAllowReplacingJob>false</jobAllowReplacingJob>
<jobName>info.txt</jobName>
<jobReportName/>
<fullUserName>bens</fullUserName>
<jobSize>52</jobSize>
<jobSubmitTime>29.06.2011 15:57:18.967</jobSubmitTime>
<jobWaitingTime>30.06.2011 17:29:14.456</jobWaitingTime>
<connections>
<connectionId>7</connectionId>
<connectionName>Folder 2</connectionName>
</connections>
<jobRequiresMetadata>false</jobRequiresMetadata>
</jobInfo>
</butterfly:GetCheckpointJobInfoResponse>
</soap:Body>
Now we can use these connection IDs to push the job:
<soap:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:PushCheckpointJob>
<flowId>7</flowId>
<checkPointId>4</checkPointId>
<jobId>0006J</jobId>
<jobInfo href="#id0"/>
</butterfly:PushCheckpointJob>
<multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<metadataXmlStr/>
<connectionIds>7</connectionIds>
<jobName>info.txt</jobName>
</multiRef>
</soap:Body>
The response is a single, reserved integer:
<soap:Body xmlns:butterfly="http://tempuri.org/butterfly.xsd">
<butterfly:PushCheckpointJobResponse>
<param-5>0</param-5>
</butterfly:PushCheckpointJobResponse>
</soap:Body>