1 /*
2 * Copyright 2006-2007 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package org.springframework.batch.repeat;
18
19
20 /**
21 * The main interface providing access to batch operations. The batch client is
22 * the {@link RepeatCallback}, where a single item or record is processed. The
23 * batch behaviour, boundary conditions, transactions etc, are dealt with by the
24 * {@link RepeatOperations} in such as way that the client does not need to know
25 * about them. The client may have access to framework abstractions, like
26 * template data sources, but these should work the same whether they are in a
27 * batch or not.
28 *
29 * @author Dave Syer
30 *
31 */
32 public interface RepeatOperations {
33
34 /**
35 * Execute the callback repeatedly, until a decision can be made to
36 * complete. The decision about how many times to execute or when to
37 * complete, and what to do in the case of an error is delegated to a
38 * {@link CompletionPolicy}.
39 *
40 * @param callback the batch callback.
41 * @return the aggregate of the result of all the callback operations. An
42 * indication of whether the {@link RepeatOperations} can continue
43 * processing if this method is called again.
44 */
45 RepeatStatus iterate(RepeatCallback callback) throws RepeatException;
46
47 }