TBeCbBORelationShips
TBeCbBORelationShips
Die Klasse TBeCbBORelationShips kapselt Eigenschaften und Funktionen für Verknüpfungen von Business-Objekten.
Funktionen und Methoden | Beschreibung | |
---|---|---|
CbAddRelationShip():N | Neue Verknüpfung zu einem Business-Objekt erstellen | |
Eigenschafft | Beschreibung | |
aDestBO:O | Business-Objekt, zu welchem die Verknüpfung erzeugt werden soll | |
aKind:N | Art der Verknüpfung | |
aType:N | Typ der Verknüpfung | |
CbAddRelationShipByDestID():N | Neue Verknüpfung zu einem Business-Objekt erstellen, | |
Eigenschafft | Beschreibung | |
aDestWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aKind:N | Art der Verknüpfung | |
aType:N | Typ der Verknüpfung | |
CbDeleteRelationShip():L | Verknüpfung löschen | |
Eigenschafft | Beschreibung | |
aID:N | ID der Verknüpfung | |
CbGetRelationShipByID():O | Rückgabe ist ein TBeBORelationShip-Objekt, welche die Informationen der Verknüpfung enthält, das Objekt muss per DestroyObject() wieder zerstört werden. | |
Eigenschafft | Beschreibung | |
aID:N | ID der Verknüpfung | |
CbFindRelationShip():O | Nach einer bestimmten Verknüpfung suchen | |
Eigenschafft | Beschreibung | |
aDestBO:O | Business-Objekt, zu welchem die Verknüpfung gesucht werden soll | |
aKind:N | Art der Verknüpfung (-1 = kann jede beliebige Art sein) | |
aType:N | Typ der Verknüpfung (-1 = kann jeder beliebiger Typ sein) | |
CbFindRelationShipByDestID():O | Nach einer bestimmten Verknüpfung suchen | |
Eigenschafft | Beschreibung | |
aDestWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung gesucht werden soll | |
aDestID:N | ID der Tabelle, zu welcher die Verknüpfung gesucht werden soll | |
aDestLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung gesucht werden soll | |
aKind:N | Art der Verknüpfung (-1 = kann jede beliebige Art sein) | |
aType:N | Typ der Verknüpfung (-1 = kann jeder beliebiger Typ sein) | |
CbFindAllRelationShips():O | Alle Verknüpfungen des Business-Objekts ermitteln (TBeCbBORelationShipList) | |
Eigenschafft | Beschreibung | |
aFilter:C | Optionale, zusätzliche ADS-konforme Filter-Bedingung für die DABVKN | |
aFindDirection:N | Verknüpfungs-Richtung, nach der gesucht werden soll | |
(default) rsfdSource | = Verknüpfung wird in Quelle gesucht | |
rsfdDestination | = Verknüpfung wird in Ziel gesucht | |
rsfdSourceAndDestination | = Verknüpfung wird in Quelle und Ziel gesucht | |
CbAddRelationShipBySourceAndDestID():N | Neue Verknüpfung ohne Business-Objekt erstellen, existiert die Verknüpfung bereits, so wird keine neue erstellt. Rückgabe ist die ID der Verknüpfung | |
Eigenschafft | Beschreibung | |
aSourceWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aDestWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aKind:N | Art der Verknüpfung | |
aType:N | Typ der Verknüpfung | |
CbFindRelationShipBySource():O | Nach einer bestimmten Verknüpfung suchen Rückgabe ist ein TBeBORelationShip-Objekt oder NIL, falls keine Verknüpfung gefunden wurde, das Objekt muss per DestroyObject() wieder zerstört werden. | |
Eigenschafft | Beschreibung | |
aSourceWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aDestWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aDestLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aKind:N | Art der Verknüpfung | |
aType:N | Typ der Verknüpfung | |
CbFindAllRelationShipsBySource():O | Alle Verknüpfungen des Business-Objekts ermitteln (TBeCbBORelationShipList) | |
Eigenschafft | Beschreibung | |
aSourceWorkArea:N | Workarea der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceID:N | ID der Tabelle, zu welcher die Verknüpfung erzeugt werden soll | |
aSourceLocation:N | STANDORT der Tabelle, zu welcher die Verknüpfung erzeugt werden soll. Sofern diese Information technisch irrelevant ist, muss -1 übergeben werden. | |
aFilter:C | Optionale, zusätzliche ADS-konforme Filter-Bedingung für die DABVKN | |
aFindDirection:N | Verknüpfungs-Richtung, nach der gesucht werden soll | |
(default) rsfdSource | = Verknüpfung wird in Quelle gesucht | |
rsfdDestination | = Verknüpfung wird in Ziel gesucht | |
rsfdSourceAndDestination | = Verknüpfung wird in Quelle und Ziel gesucht |
Beispiel
//##############################################################################
//##############################################################################
// Beschreibung: Dokumentationsprogramm zum Erzeugen von Verknüpfungen
//##############################################################################
//##############################################################################
|
m_oDM,
// Business-Objekte
m_oProjectBO, m_oDestProjectBO, m_oDestMemoBO, oRelationShip,
oRelationList, oRelationShips,
// Sonstige
nSourcePrjID, m_nDestID1, m_nDestID2, m_nRelationID
|
//##############################################################################
//##############################################################################
// Funktionen
//##############################################################################
//##############################################################################
function WriteRelationship()
writeln(
'ID: ' + BeFormat(oRelationShip.CbID, '00000'),
'DestID: ' + BeFormat(oRelationShip.CbDestID, '00000'),
'SourceWorkarea: ' + BeFormat(oRelationShip.CbSourceWorkArea, '000'),
'DestWorkarea: ' + BeFormat(oRelationShip.CbDestWorkArea, '000')
),
end,
//******************************************************************************
// Findet alle Verknüpfungen und schreibt dessen ID's in die Konsole
//******************************************************************************
function GetAllLinks()
| i |
// Alle Verknüpfungen ermitteln und Ausgeben
oRelationList := m_oProjectBO.CbRelationShips.CbFindAllRelationShips('', rsfdSource),
startseq
writeln(Str(oRelationList.CbCount()) + ' Verknüpfung(en) vorhanden'),
for i := 1 to oRelationList.CbCount() do
oRelationShip := oRelationList.CbItem(i),
WriteRelationship(),
next,
always
DestroyObject(oRelationList),
stopseq,
end,
//******************************************************************************
// Löscht eine Verknüpfung
//******************************************************************************
function DeleteLink()
// Verknüpfung suchen und löschen
m_oDestMemoBO.CbGoToID(m_nDestID2),
oRelationShip := m_oProjectBO.CbRelationShips.CbFindRelationShip(m_oDestMemoBO, 0, 0),
if not empty(oRelationShip) then
startseq
if m_oProjectBO.CbRelationShips.CbDeleteRelationShip(oRelationShip.CbID) then
writeln('Verknüpfung ' + Str(oRelationShip.CbID) + ' gelöscht'),
endif,
always
DestroyObject(oRelationShip),
stopseq,
endif,
end,
//******************************************************************************
// Erzeugen der Verknüpfungen
// @Result: null
//******************************************************************************
function CreateLinks()
// Verknüpfungen erstellen
m_oDestProjectBO.CbGoToID(m_nDestID1),
m_nRelationID := m_oProjectBO.CbRelationShips.CbAddRelationShip(m_oDestProjectBO, 0, 1),
writeln('Projekt-Verknüpfung', m_nRelationID),
m_nRelationID := m_oProjectBO.CbRelationShips.CbAddRelationShipByDestID(9, m_nDestID2, -1, 0, 0),
oRelationShip := m_oProjectBO.CbRelationShips.CbGetRelationShipByID(m_nRelationID),
writeln('Memo-Verknüpfung', oRelationShip.CbID),
end,
//******************************************************************************
// Erstellen des Memos das als Verknüpfung dienen soll
//******************************************************************************
function CreateLinkMemo()
m_oDestMemoBO.WriteLastUsed := False,
m_oDestMemoBO.CBInsertEmptyMemo(10, bcMemoLinkIDUser, val(c_usr), 0),
m_oDestMemoBO.SubjectValue := 'Ich bin eine Memo Verknüpfung',
m_oDestMemoBO.CBPost(),
m_nDestID2 := m_oDestMemoBO.CbID,
writeln('Memo-BO', m_nDestID2),
end,
//******************************************************************************
// Benötigte Business-Objekte erstellen
//******************************************************************************
function CreateBusinessObjects()
m_oProjectBO := CreateObject('TBeProjectBO', 'SRCPRJ', m_oDM),
m_oDestProjectBO := CreateObject('TBeProjectBO', 'DESTPRJ', m_oDM),
// Pro DatenModul darf nur ein ProjectBO existieren deshalb wird hier nur
// einmal ein CbDataModule zugewiesen
m_oProjectBO.CbDataModule := m_oDM,
m_oDestMemoBO := CreateObject('TBeMemoBO', 'LNKMEMO', m_oDM),
m_oDestMemoBO.CbDataModule := m_oDM,
oRelationShips := CreateObject('TBeCbBORelationShips', 'OHNEBO', m_oDM),
end,
//******************************************************************************
// Projekte erstellen
//******************************************************************************
function CreateProjects()
//| nSourcePrjID |
startseq
// Neues Projekt erstellen
m_oProjectBO.CBInsert(),
m_oProjectBO.CbDescription := 'Ich habe Verknüpfungen',
m_oProjectBO.CbType := 100,
m_oProjectBO.CbStartDate := Now(),
m_oProjectBO.CBPost(),
nSourcePrjID := m_oProjectBO.CbID,
writeln('Projekt-BO SourceID', nSourcePrjID),
// Neues Projekt das als Verknüpfung dient erstellen
m_oProjectBO.CBInsert(),
m_oProjectBO.CbDescription := 'Ich bin ein verknüpftes Projekt',
m_oProjectBO.CbType := 100,
m_oProjectBO.CbStartDate := Now(),
m_oProjectBO.CBPost(),
m_nDestID1 := m_oProjectBO.CbID,
writeln('Projekt-BO DestinationID', m_nDestID1),
m_oProjectBO.CbGoToID(nSourcePrjID),
onerror
SetError('Fehler beim Erstellen der Projekte' + crlf + GetErrorText()),
stopseq,
end,
//******************************************************************************
// Erzeugen der Verknüpfungen ohne BO
// @Result: null
//******************************************************************************
function CreateLinksNoBO()
| nID, i |
// Verknüpfungen erstellen
nID := oRelationShips.CbAddRelationShipBySourceAndDestID(waDAB010, nSourcePrjID, -1, waDAB000, m_nDestID1, -1, -1, -1),
writeln('ID ohne BO', nID),
oRelationShip := oRelationShips.CbFindRelationShipBySource(waDAB010, nSourcePrjID, -1, waDAB000, m_nDestID1, -1, -1, -1),
WriteRelationship(),
oRelationList := oRelationShips.CbFindAllRelationShipsBySource(waDAB010, nSourcePrjID, -1, '', rsfdSource),
startseq
writeln(Str(oRelationList.CbCount()) + ' Verknüpfung(en) ohne BO vorhanden'),
for i := 1 to oRelationList.CbCount() do
oRelationShip := oRelationList.CbItem(i),
WriteRelationship(),
next,
always
DestroyObject(oRelationList),
stopseq,
end,
//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################
m_oDM := CreateObject('TBeDBGet', 'VKNDOKUGET'),
startseq
CreateBusinessObjects(), // Erstellen der benötigten Business-Objekte
CreateProjects(), // Erstellen der Projekte
CreateLinkMemo(), // Memo für die Verknüpfung erstellen
CreateLinks(), // Verknüpfungen erzeugen
GetAllLinks(), // ID's aller bestehenden Verknüpfungen in die Konsole schreiben
CreateLinksNoBO(), // Test für Verknüpfungen ohne BO
// DeleteLink(), // Löscht eine Verknüpfung
always
DestroyObject(m_oDM),
stopseq,