blob: 9a2952f65e657eed23327dd462392f58c35bf7ff [file] [log] [blame]
%
% Licensed to the Apache Software Foundation (ASF) under one
% or more contributor license agreements. See the NOTICE file
% distributed with this work for additional information
% regarding copyright ownership. The ASF licenses this file
% to you under the Apache License, Version 2.0 (the
% "License"); you may not use this file except in compliance
% with the License. You may obtain a copy of the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing,
% software distributed under the License is distributed on an
% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
% KIND, either express or implied. See the License for the
% specific language governing permissions and limitations
% under the License.
%
\section{Overview Of The DUCC API}
The DUCC API provides a simple programmatic (Java) interface to DUCC for submission and
cancellation of work. (Note that the DUCC CLI is implemented using the API and provides a
model for how to use the API.)
All the API objects are instantiated using the same arguments as the CLI. The API
provides three variants for supplying arguments:
\begin{enumerate}
\item An array of Java Strings, for example {\tt DuccJobSubmit(String[] args)}.
\item A list of Java Strings, for example {\tt DuccJobSubmit(List<String> args)}.
\item A Java Properties object, for example {\tt DuccJobSubmit(Properties args)}.
\end{enumerate}
After instantiation of an API object, the {\tt boolean execute()} method is called. This
method transmits the arguments to DUCC. If DUCC receives and accepts the args, the method
returns ``true'', otherwise it returns ``false. Methods are provided to retrieve relevant
information when the {\tt execute()} returns such as IDs, messages, etc.
In the case of jobs and managed reservations, if the specification requested debug,
console attachment, or ``wait for completion'', the API provides methods to block
waiting for completion.
In the case of jobs and managed reservations, a callback object may also be passed to
the constructor. The callback object provides a means to direct messages to the
API user. If the callback is not provided, messages are written to standard output.
The API is thread-safe, so developers may manage multiple, simultaneous requests to
DUCC.
Below is the ``main()'' method of DuccJobSubmit, demonstrating the use of the API:
\begin{verbatim}
public static void main(String[] args) {
try {
DuccJobSubmit ds = new DuccJobSubmit(args, null);
boolean rc = ds.execute();
// If the return is 'true' then as best the API can tell, the submit worked
if ( rc ) {
System.out.println("Job " + ds.getDuccId() + " submitted");
int exit_code = ds.getReturnCode(); // after waiting if requested
System.exit(exit_code);
} else {
System.out.println("Could not submit job");
System.exit(1);
}
}
catch(Exception e) {
System.out.println("Cannot initialize: " + e);
System.exit(1);
}
}
\end{verbatim}
\section{Compiling and Running With the DUCC API}
A single DUCC jar file is required for both compilation and execution of the DUCC API,
{\tt uima-ducc-cli.jar}. This jar is found in \duccruntime/lib.
\section{Java API}
\ifpdf
The DUCC API is documented via Javadoc in \ducchome/webserver/root/doc/apidocs/index.html.
\else
See the \href{api/index.html}{JavaDoc} for the DUCC Public API.
\fi