!!! Im Text referenzierte Listings
!!! #REF1. Lieferscheinverarbeitung, umgesetzt mit
!!! Spring Batch
!!! - DelimitedLineTokenizer: teilt jede Zeile in einzelne Felder.
!!! - DefaultLineMapper: lässt den DelimitedLineTokenizer die Zeile zerlegen und StockItemFieldSetMapper daraus einen Objekt erzeugen
!!!- FlatFileItemReader: liest die CSV Datei zeilenweise.
!!! #REF2. Spring Integration überwacht das
!!! Dateisystem/den Ordner und leitet neue Lieferscheine an
!!! den Kommunikationskanal csvDeliveryNotesChannel weiter.
!!! #REF3. Der Service Activator horcht auf Nachrichten
!!! am Kommunikationskanal csvDeliveryNotesChannel und
!!! leitet sie an den CSV-Importer weiter, der die
!!! gelesenen Lieferscheinbestandteile mittels stockWriterAdapter in
!!! die Datenbank schreibt.
!!! Die Spring Konfiguration der verwendete Beans:
!!! REF4. In der Nachrichtenkette platziert, wandelt
!!! Apache Camels Processor die eingehende
!!! Nachricht in eine SMS- oder Mail-Benachrichtigung um.
public void process(final Exchange exchange) throws Exception {
Notification notification = exchange.getIn()
.getBody(Notification.class);
if (notification.getContactChannel(notification.getCustomer()).equals(SMS))
exchange.getIn().setBody(
new SmsNotification(notification.getCustomer(),
notification.getMessage(),
customerConfig.getSmsNumber(notification.getCustomer()));
else
exchange.getIn().setBody(
new MailNotification(notification.getCustomer(),
notification.getMessage(),
customerConfig.getMailAddressNumber(notification.getCustomer()),
customerConfig.getMailSubject(notification.getCustomer()));
}
!!! #REF5. Die von Apache Camel benötigte
!!! Routing-Implementierung definiert die Route des
!!! Nachrichtentyps.
public String slip(final Notification notification,
@Properties Map properties) {
// End routing by returning null, otherwise endless loop
// The current endpoint is in the properties.
// First run - where routing should be done - it will be null
if (properties.get(Exchange.SLIP_ENDPOINT) != null) {
return null;
}
if (notification instanceof SmsNotification) {
return "activemq:sms";
} else if (notification instanceof MailNotification) {
return "activemq:mail";
}
return null;
}
!!! #REF6. Die (Spring-)Konfiguration der einzelnen
!!! Elemente der Verarbeitungskette im
!!! Benachrichtigungsprozess von Apache Camel.
!!! #REF7. Die Implementierung des Webservice-Client
!!! mit Spring Integration stützt sich auf den im
!!! Funktionsumfang enthaltenen WebServiceGatewaySupport
!!! und auf autogenerierte Java-Objekte für die
!!! Interaktion.
public class PartsOrderService extends WebServiceGatewaySupport {
public OrderResponse order(OrderRequest orderRequest) {
OrderResponse response = (OrderResponse) getWebServiceTemplate().marshalSendAndReceive(orderRequest);
return response;
};
}
!!! #REF8. Die Implementierung des Webservice-Client
!!! stüzt sich auf den XML-Marshaller.