Interface HBCIJob
-
- All Known Implementing Classes:
AbstractGVLastSEPA
,AbstractMultiGV
,AbstractSEPAGV
,GVAccInfo
,GVCardList
,GVChangePIN
,GVCustomMsg
,GVDauerDel
,GVDauerEdit
,GVDauerLastSEPAList
,GVDauerLastSEPANew
,GVDauerList
,GVDauerNew
,GVDauerSEPADel
,GVDauerSEPAEdit
,GVDauerSEPAList
,GVDauerSEPANew
,GVDonation
,GVFestCondList
,GVFestList
,GVFestListAll
,GVInfoList
,GVInfoOrder
,GVInstUebSEPA
,GVKontoauszug
,GVKontoauszugPdf
,GVKUmsAll
,GVKUmsAllCamt
,GVKUmsNew
,GVKUmsZeitSEPA
,GVLast
,GVLastB2BSEPA
,GVLastCOR1SEPA
,GVLastSEPA
,GVMultiLast
,GVMultiLastB2BSEPA
,GVMultiLastCOR1SEPA
,GVMultiLastSEPA
,GVMultiUeb
,GVMultiUebSEPA
,GVReceipt
,GVSaldoReq
,GVSaldoReqAll
,GVSEPAInfo
,GVStatus
,GVStornoLast
,GVTAN2Step
,GVTANList
,GVTANMediaList
,GVTemplate
,GVTermMultiUebSEPA
,GVTermUeb
,GVTermUebDel
,GVTermUebEdit
,GVTermUebList
,GVTermUebSEPA
,GVTermUebSEPADel
,GVTermUebSEPAEdit
,GVTermUebSEPAList
,GVUeb
,GVUebBZU
,GVUebEil
,GVUebForeign
,GVUebGar
,GVUebSEPA
,GVUmb
,GVUmbSEPA
,GVWPDepotList
,GVWPDepotUms
,HBCIJobImpl
public interface HBCIJob
Schnittstelle für alle Aufträge, die via HBCI ausgeführt werden sollen. Ein HBCIJob-Objekt wird nur innerhalb von HBCI4Java verwaltet. Durch Aufruf einer der Methoden
HBCIHandler.newJob(String)
oderHBCIHandler.newLowlevelJob(String)
wird eine neue Instanz eines HBCIJobs erzeugt. Die konkrete Klasse dieser Instanz ist für den Anwendungsentwickler nicht von Bedeutung.Die Anwendung muss nur die für diesen Job benötigten Parameter setzen (mit
setParam(String,String)
). Falls dieser Job mehrere digitale Signaturen benötigt, können mit der MethodeaddSignaturePassport(HBCIPassport,String)
weitere Passport-Objekte zu diesem Job hinzugefügt werden, die dann als Zweit-, Dritt-, ...-Signatur bei der Nachrichtenerzeugung verwendet werden. Anschließend kann der fertig spezifizierte Job zum aktuellen HBCI-Dialog hinzugefügt werden (addToQueue()
).Nach Ausführung des HBCI-Dialoges können die Rückgabedaten und Statusinformationen für diesen Job ermittelt werden. Dazu wird die Methoode
getJobResult()
benötigt, welche eine Instanz einerHBCIJobResult
-Klasse zurückgibt. Die konkrete Klasse, um die es sich bei diesem Result-Objekt handelt, ist vom Typ des ausgeführten Jobs abhängig (z.B. gibt es eine Klasse, die Ergebnisdaten für Kontoauszüge enthält, eine Klasse für Saldenabfragen usw.). Eine Beschreibung der einzelnen Klassen für Result-Objekte findet sich im Packageorg.kapott.hbci.GV_Result
. Eine Beschreibung, welcher Job welche Klasse zurückgibt, befindet sich in der Package-Dokumentation zu diesem Package (org.kapott.hbci.GV
).
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
addSignaturePassport(HBCIPassport passport, String role)
Hinzufügen eines Passports, welches für eine zusätzliche Signatur für diesen Auftrag benutzt wird.void
addToQueue()
Hinzufügen dieses Jobs zu einem HBCI-Dialog.void
addToQueue(String customerId)
Hinzufügen dieses Jobs zu einem HBCI-Dialog.String
getExternalId()
Liefert eine optionalen Identifier, der von der Banking-Anwendung genutzt werden kann, um einen Bezug zum urspruenglichen Auftrag herstellen zu koennen.List
getJobParameterNames()
Gibt alle möglichen Job-Parameter für einen Lowlevel-Job zurück.Properties
getJobRestrictions()
Gibt für einen Job alle bekannten Einschränkungen zurück, die bei der Ausführung des jeweiligen Jobs zu beachten sind.HBCIJobResult
getJobResult()
Gibt ein Objekt mit den Rückgabedaten für diesen Job zurück.List
getJobResultNames()
Gibt alle möglichen Property-Namen für die Lowlevel-Rückgabedaten dieses Jobs zurück.Properties
getLowlevelParams()
Gibt alle für diesen Job gesetzten Parameter zurück.int
getMinSigs()
Gibt zurück, wieviele Signaturen für diesen Job mindestens benötigt werden.String
getName()
Gibt den internen Namen für diesen Job zurück.int
getSecurityClass()
Gibt zurück, welche Sicherheitsklasse für diesen Job mindestens benötigt wird.String
getSegVersion()
Gibt die für diesen Job verwendete Segment-Versionsnummer zurückvoid
setExternalId(String id)
Kann von der Banking-Anwendung genutzt werden, um einen eigenen Identifier im Job zu speichern, um im spaeteren Verlauf des HBCI-Dialoges (z.Bsp. bei der TAN-Eingabe) einen Bezug zum urspruenglichen Auftrag wiederherstellen zu koennen.void
setParam(String paramName, int i)
Setzen eines Job-Parameters, bei dem ein Integer-Wert Da als Wert erwartet wird.void
setParam(String paramName, Integer index, String value)
Setzen eines Job-Parameters.void
setParam(String paramName, Integer index, Date date)
void
setParam(String paramname, Integer index, Konto acc)
void
setParam(String paramname, Integer index, Value v)
void
setParam(String paramName, String value)
Setzen eines Job-Parameters.void
setParam(String paramName, Date date)
Setzen eines Job-Parameters, bei dem ein Datums als Wert erwartet wird.void
setParam(String paramname, Konto acc)
Setzen eines komplexen Job-Parameters (Kontodaten).void
setParam(String paramname, Value v)
Setzen eines komplexen Job-Parameters (Geldbetrag).
-
-
-
Method Detail
-
getName
String getName()
Gibt den internen Namen für diesen Job zurück.- Returns:
- Job-Name, wie er intern von HBCI4Java verwendet wird.
-
getSegVersion
String getSegVersion()
Gibt die für diesen Job verwendete Segment-Versionsnummer zurück
-
getMinSigs
int getMinSigs()
Gibt zurück, wieviele Signaturen für diesen Job mindestens benötigt werden. Diese Information wird den BPD entnommen. In einigen Fällen gibt es in den UPD aktuellere Informationen zu einem bestimmten Geschäftsvorfall, zur Zeit werden die UPD von dieser Methode aber nicht ausgewertet.
Wird für einen Job mehr als eine Signatur benötigt, so können mit der Methode
addSignaturePassport(HBCIPassport, String)
Passports bestimmt werden, die für die Erzeugung der zusätzlichen Signaturen verwendet werden sollen.Es wird außerdem empfohlen, dass Aufträge, die mehrere Signaturen benötigen, jeweils in einer separaten HBCI-Nachricht versandt werden. Um das zu erzwingen, kann entweder ein HBCI-Dialog geführt werden, der definitiv nur diesen einen Auftrag enthält (also nur ein
addToQueue()
für diesen Dialog), oder es wird beim Zusammenstellen der Jobs für einen Dialog sichergestellt, dass ein bestimmter Job in einer separaten Nachricht gesandt wird (HBCIHandler.newMsg()
).- Returns:
- Mindest-Anzahl der benötigten Signaturen für diesen Job
-
getSecurityClass
int getSecurityClass()
Gibt zurück, welche Sicherheitsklasse für diesen Job mindestens benötigt wird. Diese Information wird den BPD entnommen. Sicherheitsklassen sind erst ab FinTS-3.0 definiert. Falls keine Sicherheitsklassen unterstützt werden (weil eine geringere HBCI-Version als FinTS-3.0 verwendet wird), wird
1
zurückgegeben. Die Sicherheitsklasse ist nur die Sicherheitsmechanismen DDV und RDH relevant - bei Verwendung von PIN/TAN hat die Sicherheitsklasse keine Bedeutung.Folgende Sicherheitsklassen sind definiert:
0
: kein Sicherheitsdienst erforderlich1
: Authentication - es wird eine Signatur mit dem Signaturschlüssel benötigt.2
: Authentication mit fortgeschrittener elektronischer Signatur unter Verwendung des Signaturschlüssels.3
: Non-Repudiation mit fortgeschrittener elektronischer Signatur und optionaler Zertifikatsprüfung unter Verwendung des DigiSig-Schlüssels4
: Non-Repudiation mit fortgeschrittener bzw. qualifizierter elektronischer Signatur und zwingender Zertifikatsüberprüfung mit dem DigiSig-Schlüssel
- Returns:
- Sicherheitsklasse, die für diese Job benötigt wird
-
getJobParameterNames
List getJobParameterNames()
Gibt alle möglichen Job-Parameter für einen Lowlevel-Job zurück. Die Anwendung dieser Methode ist nur sinnvoll, wenn es sich bei dem aktuellen Job um einen Lowlevel-Job handelt (erzeugt mitHBCIHandler.newLowlevelJob(String)
). Die zurückgegebenen Parameternamen können als erstes Argument der MethodesetParam(String, String)
verwendet werden.- Returns:
- Liste aller gültigen Parameternamen (nur für Lowlevel-Jobs)
-
getJobResultNames
List getJobResultNames()
Gibt alle möglichen Property-Namen für die Lowlevel-Rückgabedaten dieses Jobs zurück. Die Lowlevel-Rückgabedaten können mitgetJobResult()
undHBCIJobResult.getResultData()
ermittelt werden. Diese Methode verwendet internHBCIHandler.getLowlevelJobResultNames(String)
.- Returns:
- Liste aller prinzipiell möglichen Property-Keys für die Lowlevel-Rückgabedaten dieses Jobs
-
getJobRestrictions
Properties getJobRestrictions()
Gibt für einen Job alle bekannten Einschränkungen zurück, die bei der Ausführung des jeweiligen Jobs zu beachten sind. Diese Daten werden aus den Bankparameterdaten des aktuellen Passports extrahiert. Sie können von einer HBCI-Anwendung benutzt werden, um gleich entsprechende Restriktionen bei der Eingabe von Geschäftsvorfalldaten zu erzwingen (z.B. die maximale Anzahl von Verwendungszweckzeilen, ob das Ändern von terminierten Überweisungen erlaubt ist usw.).
Die einzelnen Einträge des zurückgegebenen Properties-Objektes enthalten als Key die Bezeichnung einer Restriktion (z.B. "
maxusage
"), als Value wird der entsprechende Wert eingestellt. Die Bedeutung der einzelnen Restriktionen ist zur Zeit nur der HBCI-Spezifikation zu entnehmen. In späteren Programmversionen werden entsprechende Dokumentationen zur internen HBCI-Beschreibung hinzugefügt, so dass dafür eine Abfrageschnittstelle implementiert werden kann.Diese Methode verwendet intern
.HBCIHandler.getLowlevelJobRestrictions(String)
- Returns:
- Properties-Objekt mit den einzelnen Restriktionen
-
getLowlevelParams
Properties getLowlevelParams()
Gibt alle für diesen Job gesetzten Parameter zurück. In dem zurückgegebenenProperties
-Objekt sind werden die Parameter als Lowlevel-Parameter abgelegt. Außerdem hat jeder Lowlevel-Parametername zusätzlich ein Prefix, welches den Lowlevel-Job angibt, für den der Parameter gilt (also z.B.Ueb3.BTG.value
- Returns:
- aktuelle gesetzte Lowlevel-Parameter für diesen Job
-
setParam
void setParam(String paramname, Konto acc)
Setzen eines komplexen Job-Parameters (Kontodaten). Einige Jobs benötigten Kontodaten als Parameter. Diese müssten auf "normalem" Wege durch mehrere Aufrufe vonsetParam(String,String)
erzeugt werden (Länderkennung, Bankleitzahl, Kontonummer, Unterkontomerkmal, Währung, IBAN, BIC). Durch Verwendung dieser Methode wird dieser Weg abgekürzt. Es wird ein Kontoobjekt übergeben, für welches die entsprechendensetParam(String,String)
-Aufrufe automatisch erzeugt werden.- Parameters:
paramname
- die Basis der Parameter für die Kontodaten (fürmy.country
,my.blz
,my.number
,my.subnumber
,my.bic
,my.iban
,my.curr
wäre das also "my
")acc
- ein Konto-Objekt, aus welchem die zu setzenden Parameterdaten entnommen werden
-
setParam
void setParam(String paramname, Integer index, Konto acc)
- Parameters:
paramname
-index
-acc
-- See Also:
- jedoch mit Index.
-
setParam
void setParam(String paramname, Value v)
Setzen eines komplexen Job-Parameters (Geldbetrag). Einige Jobs benötigten Geldbeträge als Parameter. Diese müssten auf "normalem" Wege durch zwei Aufrufe vonsetParam(String,String)
erzeugt werden (je einer für den Wert und die Währung). Durch Verwendung dieser Methode wird dieser Weg abgekürzt. Es wird ein Value-Objekt übergeben, für welches die entsprechenden zweisetParam(String,String)
-Aufrufe automatisch erzeugt werden.- Parameters:
paramname
- die Basis der Parameter für die Geldbetragsdaten (für "btg.value
" und "btg.curr
" wäre das also "btg
")v
- ein Value-Objekt, aus welchem die zu setzenden Parameterdaten entnommen werden
-
setParam
void setParam(String paramName, Date date)
Setzen eines Job-Parameters, bei dem ein Datums als Wert erwartet wird. Diese Methode dient als Wrapper fürsetParam(String,String)
, um das Datum in einen korrekt formatierten String umzuwandeln. Das "richtige" Datumsformat ist dabei abhängig vom aktuellen Locale.- Parameters:
paramName
- Name des zu setzenden Job-Parametersdate
- Datum, welches als Wert für den Job-Parameter benutzt werden soll
-
setParam
void setParam(String paramName, int i)
Setzen eines Job-Parameters, bei dem ein Integer-Wert Da als Wert erwartet wird. Diese Methode dient nur als Wrapper fürsetParam(String,String)
.- Parameters:
paramName
- Name des zu setzenden Job-Parametersi
- Integer-Wert, der als Wert gesetzt werden soll
-
setParam
void setParam(String paramName, String value)
Setzen eines Job-Parameters. Für alle Highlevel-Jobs ist in der Package-Beschreibung zum Package
org.kapott.hbci.GV
eine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem ToolShowLowlevelGVs
oder zur Laufzeit durch Aufruf der MethodeHBCIHandler.getLowlevelJobParameterNames(String)
ermittelt werden.Bei Verwendung dieser oder einer der anderen
setParam()
-Methoden werden zusätzlich einige der Job-Restriktionen (siehegetJobRestrictions()
) analysiert. Beim Verletzen einer der überprüften Einschränkungen wird eine Exception mit einer entsprechenden Meldung erzeugt. Diese Überprüfung findet allerdings nur bei Highlevel-Jobs statt.- Parameters:
paramName
- der Name des zu setzenden Parameters.value
- Wert, auf den der Parameter gesetzt werden soll
-
setParam
void setParam(String paramName, Integer index, String value)
Setzen eines Job-Parameters. Für alle Highlevel-Jobs ist in der Package-Beschreibung zum Package
org.kapott.hbci.GV
eine Auflistung aller Jobs und deren Parameter zu finden. Für alle Lowlevel-Jobs kann eine Liste aller Parameter entweder mit dem ToolShowLowlevelGVs
oder zur Laufzeit durch Aufruf der MethodeHBCIHandler.getLowlevelJobParameterNames(String)
ermittelt werden.Bei Verwendung dieser oder einer der anderen
setParam()
-Methoden werden zusätzlich einige der Job-Restriktionen (siehegetJobRestrictions()
) analysiert. Beim Verletzen einer der überprüften Einschränkungen wird eine Exception mit einer entsprechenden Meldung erzeugt. Diese Überprüfung findet allerdings nur bei Highlevel-Jobs statt.- Parameters:
paramName
- der Name des zu setzenden Parameters.index
- der Index bei Index-Parametern, sonstnull
value
- Wert, auf den der Parameter gesetzt werden soll
-
addToQueue
void addToQueue()
Hinzufügen dieses Jobs zu einem HBCI-Dialog. Diese Methode arbeitet analog zu
addToQueue(String)
, nur dass hier diecustomerid
mit der Kunden-ID vorbelegt ist, wie sie im aktuellen Passport gespeichert ist.
-
addToQueue
void addToQueue(String customerId)
Hinzufügen dieses Jobs zu einem HBCI-Dialog. Nachdem alle Jobparameter mit
setParam(String,String)
gesetzt wurden, kann der komplett spezifizierte Job mit dieser Methode zur Auftragsliste eines Dialoges hinzugefügt werden.Die
customerId
gibt an, unter welcher Kunden-ID dieser Job ausgeführt werden soll. Existiert für eine HBCI-Nutzerkennung (ein Passport) nur genau eine Kunden-ID (wie das i.d.R. der Fall ist), so kann dercustomerId
-Parameter weggelassen werden - HBCI4Java verwendet dann automatisch die richtige Kunden-ID (als Kunden-ID wird in diesem Fall der Wert vonHBCIPassport.getCustomerId()
verwendet). Gibt es aber mehrere gültige Kunden-IDs für einen HBCI-Zugang, so muss die Kunden-ID, die für diesen Job verwendet werden soll, mit angegeben werden.Jeder Auftrag (=Job) ist i.d.R. an ein bestimmtes Konto des Auftraggebers gebunden (Überweisung: das Belastungskonto; Saldenabfrage: das abzufragende Konto usw.). Als Kunden-ID für einen Auftrag muss die Kunden-ID angegeben werden, die für dieses Konto verfügungsberechtigt ist.
I.d.R. liefert eine Bank Informationen über alle Konten, auf die via HBCI zugegriffen werden kann. Ist das der Fall, so kann die Menge dieser Konten mit
HBCIPassport.getAccounts()
ermittelt werden. In jedem zurückgemeldetenKonto
-Objekt ist im Feldcustomerid
vermerkt, welche Kunden-ID für dieses Konto verfügungsberechtigt ist. Diese Kunden-ID müsste dann also beim Hinzufügen eines Auftrages angegeben werden, welcher das jeweilige Konto betrifft.Liefert eine Bank diese Informationen nicht, so hat die Anwendung selbst eine Kontenverwaltung zu implementieren, bei der jedem Nutzerkonto eine zu verwendende Kunden-ID zugeordnet ist.
Ein HBCI-Dialog kann aus beliebig vielen HBCI-Nachrichten bestehen. HBCI4Java versucht zunächst, alle Jobs in einer einzigen Nachricht unterzubringen. Kann ein Job nicht mehr zur aktuellen Nachricht hinzugefügt werden (weil sonst bestimmte vorgegebene Bedingungen nicht eingehalten werden), so legt HBCI4Java automatisch eine neue Nachricht an, zu der der Job schließlich hinzugefügt wird. Beim Ausführen des HBCI-Dialoges (siehe
HBCIHandler.execute()
) werden dann natürlich alle erzeugten Nachrichten zum HBCI-Server gesandt.Der HBCI-Kernel bestimmt also automatisch, ob ein Auftrag noch mit in die aktuelle Nachricht aufgenommen werden kann, oder ob eine separate Nachricht erzeugt werden muss. Der manuelle Aufruf von
HBCIHandler.newMsg()
ist deshalb im Prinzip niemals notwendig, es sei denn, es soll aus anderen Gründen eine neue Nachricht begonnen werden.- Parameters:
customerId
- die Kunden-ID, zu deren Dialog der Auftrag hinzugefügt werden soll
-
getJobResult
HBCIJobResult getJobResult()
Gibt ein Objekt mit den Rückgabedaten für diesen Job zurück. Das zurückgegebene Objekt enthält erst nach der Ausführung des Jobs gültige Daten.- Returns:
- ein Objekt mit den Rückgabedaten und Statusinformationen zu diesem Job
-
addSignaturePassport
void addSignaturePassport(HBCIPassport passport, String role)
Hinzufügen eines Passports, welches für eine zusätzliche Signatur für diesen Auftrag benutzt wird.role
gibt dabei die Rolle an, die der Eigentümer des zusätzlichen Passports in Bezug auf diesen Job (bzw. die aktuelle Nachricht) einnimmt. Gültige Werte sind inHBCIPassport
beschrieben. Mit der MethodegetMinSigs()
kann ermittelt werden, wieviele Signaturen für einen Job mindestens benötigt werden.- Parameters:
passport
- das hinzuzufügende Passport-Objekt, welches für eine zusätzliche Signatur benutzt werden sollrole
- die Rolle, in der sich der Eigentümer des zusätzlichen Passport-Objektes bezüglich dieses Jobs befindet
-
setExternalId
void setExternalId(String id)
Kann von der Banking-Anwendung genutzt werden, um einen eigenen Identifier im Job zu speichern, um im spaeteren Verlauf des HBCI-Dialoges (z.Bsp. bei der TAN-Eingabe) einen Bezug zum urspruenglichen Auftrag wiederherstellen zu koennen.- Parameters:
id
- optionale ID.
-
getExternalId
String getExternalId()
Liefert eine optionalen Identifier, der von der Banking-Anwendung genutzt werden kann, um einen Bezug zum urspruenglichen Auftrag herstellen zu koennen.- Returns:
- der Identifier.
-
-