- Dieses Thema ist leer.
- Beitrag
-
- 9. März 2021 um 8:12 Uhr
Bei der Entwicklung von eigenen zeitgesteuerten Aufgaben oder Adaptern kann es der Anwendungsfall erfordern, dass die Aufgabe oder der Adapter zustandsbehaftet sind und Daten persistieren müssen, damit sie bei der nächsten Ausführung auch nach einem Serverneustart wieder verfügbar sind. Als Beispiel sei hier die zeitgesteuerte Aufgabe Datenbank Delta-Abfrage genannt, die den Zeitpunkt der letzten Ausführung persistiert, um damit bei der nächsten Ausführung die Abfrage einzuschränken.Im TRANSCONNECT® Manager werden diese Daten im Editor für die zeitgesteuerte Aufgabe oder den Adapter oben rechts angezeigt und können editiert werden.
Beispiel 1, Definition der persistenten Daten im Adapter:
com.company.tc.adapter.impl.AdapterFactory
@Override protected ValuePair<Map<String,PropertyMetaData>,Map<String,PropertyMetaData>> getPersistenceMetadata() {
Map<String,PropertyMetaData> in = new HashMap<>( 1 ); Map<String,PropertyMetaData> out = new HashMap<>( 1 ); in.put( PERS_PROPERTY_TID_IN, new PropertyMetaData( Messages.PERS_PROPERTY_TID_NAME, Messages.PERS_PROPERTY_TID_DESC, Map.class, // type null, // no default value false, // not required null // no validator ) ); out.put( PERS_PROPERTY_TID_OUT, new PropertyMetaData( Messages.PERS_PROPERTY_TID_NAME, Messages.PERS_PROPERTY_TID_DESC, Map.class, // type null, // no default value false, // not required null // no validator ) ); return new ValuePair<>( in, out );
}
Beispiel 2, Definition der persistenten Daten in einer zeitgesteuerten Aufgabe:
public class QueryDatabaseDelta extends ScheduleWorkflow implements MetadataProvider2
@Override public Map<String,PropertyMetaData> getPersistenceMetadata() { Map<String,PropertyMetaData> meta = new HashMap<>(); meta.put( PERS_PROPERTY_LASTRUN, new PropertyMetaData( Messages.QUERYDBDELTA_PERS_PROPERTY_LASTRUN_NAME, // name Messages.QUERYDBDELTA_PERS_PROPERTY_LASTRUN_DESC, // description Date.class, // type new Date( 0 ), // default value false, // required property null ) ); // no validator return meta; }
Beispiel 3, Lesen und Schreiben der Daten in der zeitgesteuerten Aufgabe:
public class QueryDatabaseDelta extends ScheduleWorkflow implements MetadataProvider2
public void execute( WorkflowContext context ) { // read data Date dtLastRun = context.properties.get( AdapterFactory.PERS_PROPERTY_LASTRUN, Date.class ); // write data context.properties.put( AdapterFactory.PERS_PROPERTY_LASTRUN, new Date() ); }
Beispiel 4, Lesen und Schreiben der Daten in einem Adapter:
public class InboundAdapter/OutboundAdapter
// read data PersistedMap map = getPersistenceProperties(); Date dtLastRun = map.get( AdapterFactory.PERS_PROPERTY_LASTRUN ); // write data map.put( AdapterFactory.PERS_PROPERTY_LASTRUN, new Date() );
Die folgenden Datentypen werden unterstützt:
-
java.lang.Boolean
-
java.util.Date
-
java.util.Collection
-
java.util.HashMap
-
java.lang.Number
-
java.lang.String
00
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.