BPM:GUI Plugins: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „ = GUI Plugins = <div class="level1"> GUI Plugins sind Plugins welche speziell für die HTKServer.GUI.exe geschrieben wurden. </div> == Beschreibung == <div c…“)
 
Keine Bearbeitungszusammenfassung
Zeile 30: Zeile 30:
== Schritt für Schritt: Erstellung eines Plugins ==
== Schritt für Schritt: Erstellung eines Plugins ==
<div class="level2">
<div class="level2">
#Nach öffnen des Visual Studio's, wählen Sie bitte Neues Projekt und erstellen eine .NET Framework 4.0 Klassenbibliothek.<br/> <br/> [[File:GUI Plugins 1.png]]<br/> <br/> Getreu dem Motto [http://de.wikipedia.org/wiki/Konvention_vor_Konfiguration Conversion over Configuration] muss der Name '''HTKServer.GUI.Plugins. ''' gefolgt von ihrem Projektnamen lauten.  
#Nach öffnen des Visual Studio's, wählen Sie bitte Neues Projekt und erstellen eine .NET Framework 4.0 Klassenbibliothek.<br/> <br/> [[File:GUI Plugins 1.png|RTENOTITLE]]<br/> <br/> Getreu dem Motto [http://de.wikipedia.org/wiki/Konvention_vor_Konfiguration Conversion over Configuration] muss der Name '''HTKServer.GUI.Plugins. ''' gefolgt von ihrem Projektnamen lauten.  
#Nun benötigen wir noch verschiedene Projektverweise. Die Basisvariante eines Plugins muss folgende Verweise enthalten.<br/> <br/> [[File:GUI Plugins 2.png]]<br/> <br/> [[File:GUI Plugins 3.png]]<br/> <br/> '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition(v=vs.110).aspx System.ComponentModel.Composition]''', '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v=vs.110).aspx System.ComponentModel.DataAnnotations]''' und '''[https://msdn.microsoft.com/en-us/library/system.windows.forms(v=vs.110).aspx System.Windows.Forms]''' können aus dem .NET Framework Standardkatalog verwiesen werden. '''HTKLicense''', '''HTKServer.GUI.Plugins.IPlugin''' und '''HTKServer.GUI.Shared''' können aus dem Installationsordner der BusinessProcessManagement GUI im Ordner Plugins verwiesen werden.<br/> <br/> [[File:GUI Plugins 4.png]]  
#Nun benötigen wir noch verschiedene Projektverweise. Die Basisvariante eines Plugins muss folgende Verweise enthalten.<br/> <br/> [[File:GUI Plugins 2.png|RTENOTITLE]]<br/> <br/> [[File:GUI Plugins 3.png|RTENOTITLE]]<br/> <br/> '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition(v=vs.110).aspx System.ComponentModel.Composition]''', '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations(v=vs.110).aspx System.ComponentModel.DataAnnotations]''' und '''[https://msdn.microsoft.com/en-us/library/system.windows.forms(v=vs.110).aspx System.Windows.Forms]''' können aus dem .NET Framework Standardkatalog verwiesen werden. '''HTKLicense''', '''HTKServer.GUI.Plugins.IPlugin''' und '''HTKServer.GUI.Shared''' können aus dem Installationsordner der BusinessProcessManagement GUI im Ordner Plugins verwiesen werden.<br/> <br/> [[File:GUI Plugins 4.png|RTENOTITLE]]  
#Nun sollte die Datei<br/> [[File:GUI Plugins 5.png]]<br/> in<br/> [[File:GUI Plugins 6.png]]<br/> umbenannt werden. Sollte es zu einer Meldung kommen ob alle Projektverweise umbenannt werden sollen, so antworten Sie bitte mit JA.,  
#Nun sollte die Datei<br/> <span style="color:#FF0000">[[File:Class1.png]]</span><br/> in<br/> [[File:GUI Plugins 5.png|RTENOTITLE]]<br/> umbenannt werden. Sollte es zu einer Meldung kommen ob alle Projektverweise umbenannt werden sollen, so antworten Sie bitte mit JA.,  
#Jetzt lassen wir die Klasse Plugin von der abstrakten Basisklasse '''PluginBase''' erben, sowie von den Interfaces '''IPlugin.IPlugin, ''' '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]''' und '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' im Anschluss implementieren wir die Interfaces durch anklicken der zugehörigen Microsoft Visual Studio Funktion.<br/> <br/> <u>'''IPlugin.IPlugin​''' </u><br/> [[File:GUI Plugins 7.png]]<br/> <u>'''IPartImportsSatisfiedNotification'''</u>​<br/> [[File:GUI Plugins 8.png]]<br/> <br/> '''<u>IDisposable</u> '''<br/> [[File:GUI Plugins 8.png]]  
#Jetzt lassen wir die Klasse Plugin von der abstrakten Basisklasse '''PluginBase''' erben, sowie von den Interfaces '''IPlugin.IPlugin, ''' '''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]''' und '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' im Anschluss implementieren wir die Interfaces durch anklicken der zugehörigen Microsoft Visual Studio Funktion.<br/> <br/> <u>'''IPlugin.IPlugin​''' </u><br/> <span style="color:#FF0000">namespage </span><br/> <u>'''IPartImportsSatisfiedNotification'''</u>​<br/> <span style="color:#FF0000">Import IPartImport</span><br/> <br/> '''<u>IDisposable</u> '''<br/> [[File:GUI Plugins 8.png|RTENOTITLE]]  
#Der Interface Member von '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' ist <span style="color:#0000FF">public void</span> <span style="color:#008080">Dispose</span> sollten Sie die Dispose funktion nicht benötigen, so lassen Sie diese bitte leer. Ansonsten füllen Sie den Dispose block mit den nötigen freizugebenden unmanaged Ressourcen etc. Weitere Infos zu IDisposable finden Sie unter: [https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx MSDN IDisposable Interface] und [http://stackoverflow.com/questions/538060/proper-use-of-the-idisposable-interface Proper use of the IDisposable Interface]  
#Der Interface Member von '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' ist <span style="color:#0000FF">public void</span> <span style="color:#008080">Dispose</span> sollten Sie die Dispose funktion nicht benötigen, so lassen Sie diese bitte leer. Ansonsten füllen Sie den Dispose block mit den nötigen freizugebenden unmanaged Ressourcen etc. Weitere Infos zu IDisposable finden Sie unter: [https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx MSDN IDisposable Interface] und [http://stackoverflow.com/questions/538060/proper-use-of-the-idisposable-interface Proper use of the IDisposable Interface]  
#Der Interface Member von <u>'''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]''' </u> <span style="color:#0000FF">public void</span> <span style="color:#008080">OnImportsSatisfied.</span> Im Regelfall können Sie diese Methode leer lassen. Weitere Informationen über den Zwekc von OnImportsSatisfied finden Sie unter [https://msdn.microsoft.com/de-de/library/system.componentmodel.composition.ipartimportssatisfiednotification.onimportssatisfied(v=vs.110).aspx IPartImportsSatisfiedNotification . OnImportsSatisfied-Methode​] sowie unter [https://stefanhenneken.wordpress.com/2011/06/19/mef-teil-3-lifecycle-beeinflussen-und-berwachen/ MEF Teil 3 – Lifecycle beeinflussen und überwachen​].  
#Der Interface Member von <u>'''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]''' </u> <span style="color:#0000FF">public void</span> <span style="color:#008080">OnImportsSatisfied.</span> Im Regelfall können Sie diese Methode leer lassen. Weitere Informationen über den Zwekc von OnImportsSatisfied finden Sie unter [https://msdn.microsoft.com/de-de/library/system.componentmodel.composition.ipartimportssatisfiednotification.onimportssatisfied(v=vs.110).aspx IPartImportsSatisfiedNotification . OnImportsSatisfied-Methode​] sowie unter [https://stefanhenneken.wordpress.com/2011/06/19/mef-teil-3-lifecycle-beeinflussen-und-berwachen/ MEF Teil 3 – Lifecycle beeinflussen und überwachen​].  
#OPTIONAL: Es empfiehlt sich als "Best Practice" die Interface Member von <u>'''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]'''</u>und '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' per Region einzuklappen wenn diese ungenutzt sind.<br/> [[File:GUI Plugins 9.png]]  
#OPTIONAL: Es empfiehlt sich als "Best Practice" die Interface Member von <u>'''[https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.ipartimportssatisfiednotification(v=vs.110).aspx IPartImportsSatisfiedNotification]'''</u>und '''[https://msdn.microsoft.com/en-us/library/system.idisposable(v=vs.110).aspx IDisposable]''' per Region einzuklappen wenn diese ungenutzt sind.<br/> [[File:GUI Plugins 9.png|RTENOTITLE]]  
#Nun '''müssen''' wir noch den [http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata MEF-Export] der DLL definieren. Hierzu '''muss ''' das '''Export ''' Attribut mit dem Entsprechenden Typ des Interfaces, sowie das '''[https://msdn.microsoft.com/en-us/library/ee155691(v=vs.110).aspx#metadata_and_metadata_views ExportMetaData]''' Attribut mit dem entsprechendenm Pluginnamen hinzugefügt werden. Bitte achten Sie darauf dass Sie dies nicht vergessen, denn ohne diese beiden Attribute kann das Plugin nicht erkannt werden.<br/> [[File:GUI Plugins 10.png]]
#Nun '''müssen''' wir noch den [http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata MEF-Export] der DLL definieren. Hierzu '''muss ''' das '''Export ''' Attribut mit dem Entsprechenden Typ des Interfaces, sowie das '''[https://msdn.microsoft.com/en-us/library/ee155691(v=vs.110).aspx#metadata_and_metadata_views ExportMetaData]''' Attribut mit dem entsprechendenm Pluginnamen hinzugefügt werden. Bitte achten Sie darauf dass Sie dies nicht vergessen, denn ohne diese beiden Attribute kann das Plugin nicht erkannt werden.<br/> &nbsp;
#Das Interface '''IPlugin''' implementiert 2 Member. <span style="color:#0000FF">public bool</span> <span style="color:#008080">StartupEntr</span> y(<span style="color:#0000FF">ProcessInformation</span> processInformation) und <span style="color:#0000FF">public bool</span> <span style="color:#008080">JobEntry</span> (<span style="color:#0000FF">ProcessInformation</span> processInformation). Was auffällt ist das beide Funktionen den processInformation parameter übergeben bekommen. Der processInformation parameter wird innerhalb der HauptGUI gebildet und beinhaltet folgende schreibgeschützte Properties.<br/> [[File:GUI Plugins 11.png]]<br/> Die Properties sollten selbstsprechend sein, das LocalisationSystem kann durch die Übergabe im Plugin genutzt werden. Die Property ProcessType beinhaltet die Informationen um was für einen Prozess es sich handelt, also bspw. VKBeleg After Save etc.  
#Das Interface '''IPlugin''' implementiert 2 Member. <span style="color:#0000FF">public bool</span> <span style="color:#008080">StartupEntr</span> y(<span style="color:#0000FF">ProcessInformation</span> processInformation) und <span style="color:#0000FF">public bool</span> <span style="color:#008080">JobEntry</span> (<span style="color:#0000FF">ProcessInformation</span> processInformation). Was auffällt ist das beide Funktionen den processInformation parameter übergeben bekommen. Der processInformation parameter wird innerhalb der HauptGUI gebildet und beinhaltet folgende schreibgeschützte Properties.<br/> <span style="color:#FF0000">Variablen</span><br/> Die Properties sollten selbstsprechend sein, das LocalisationSystem kann durch die Übergabe im Plugin genutzt werden. Die Property ProcessType beinhaltet die Informationen um was für einen Prozess es sich handelt, also bspw. VKBeleg After Save etc.  
#Der Interface Member '''StartupEntry''' wird bei allen Plugins nach dem Druck auf Login / Anmelden ausgeführt. Dies kann also dazu genutzt werden, um bspw. einmalig etwas beim ersten Aufruf auszuführen, egal ob der Prozess definiert wurde oder nicht. Bspw. "Achtung, die Grundlagen für das Plugin XYZ werden nun automatisch eingerichtet, bitte haben Sie einen moment Geduld". Wichtig ist hierbei nur, dass diese Methoden '''immer ''' ausgeführt werden, d.H. Sie müssen bei Verwendung des StartupEntry Einstiegspunktes aufjedenfall dafür sorgen, dass Sie per Markierung in der DB oder in einer Datei ein erneutes Aufrufen verhindern, sonst würde man in dem genannten Beispiel bei jedem Start der GUI wieder nach der Grundlageninstallation gefragt werden. '''Achtung''' Dies betrifft nur dinge welche beim aufruf der Gui gestartet werden müssen und nicht mit der Standardinstallationsroutine für Pluginvorrausetzungen abbilden werden können. Die funktion sollte true zurückgeben wenn Sie nicht genutzt wird, oder wenn es keine Probleme gab, ansonsten natürlich False.  
#Der Interface Member '''StartupEntry''' wird bei allen Plugins nach dem Druck auf Login / Anmelden ausgeführt. Dies kann also dazu genutzt werden, um bspw. einmalig etwas beim ersten Aufruf auszuführen, egal ob der Prozess definiert wurde oder nicht. Bspw. "Achtung, die Grundlagen für das Plugin XYZ werden nun automatisch eingerichtet, bitte haben Sie einen moment Geduld". Wichtig ist hierbei nur, dass diese Methoden '''immer ''' ausgeführt werden, d.H. Sie müssen bei Verwendung des StartupEntry Einstiegspunktes aufjedenfall dafür sorgen, dass Sie per Markierung in der DB oder in einer Datei ein erneutes Aufrufen verhindern, sonst würde man in dem genannten Beispiel bei jedem Start der GUI wieder nach der Grundlageninstallation gefragt werden. '''Achtung''' Dies betrifft nur dinge welche beim aufruf der Gui gestartet werden müssen und nicht mit der Standardinstallationsroutine für Pluginvorrausetzungen abbilden werden können. Die funktion sollte true zurückgeben wenn Sie nicht genutzt wird, oder wenn es keine Probleme gab, ansonsten natürlich False.  
#Der Interface Member '''JobEntry''' wird aufgerufen sobald man innerhalb der Business Process Management GUI auf Erweiterte Konfiguration eines Jobs drückt. Hier öffnet man in der Regel eine Maske welche zur erweiterten Konfiguration genutzt werden kann. Es können zusätzlich auch Prüfungen stattfinden, beispielsweise ob ein Mandant gewählt wurde oder nicht. Wenn diese Funktion False zurückgibt, wird der Job nicht gespeichert und das hinterlegte Delete Script innerhalb der [[/doku.php?id=wiki:guipluginassets|Assets]]-Struktur wird aufgerufen, auf das Thema [[/doku.php?id=wiki:guipluginassets|Assets]] gehen wir später ein. Hier ein Beispiel:<br/> <br/> [[File:GUI Plugins 11.png]]<br/> Die [[/doku.php?id=wiki:pluginbase|Basisklasse]] (base.) beinhaltet verschiedene Basisfunktionen wie beispielsweise GetLogger.<br/> ​Die aufgerufene Form sollte als Best Practise immer die folgenden Konstruktor-Parameter definiert haben:<br/> <br/> [[File:GUI Plugins 12.png]]<br/> Um einen FluentLogger zu verwenden (was Sie wirklich tun sollten!), setzen Sie bitte einen Verweis auf die '''HTKFunctionsLibrary ''' welche Sie auch im Plugins Ordner ihrer Installierten Business Process Management GUI finden.<br/> <br/> [[File:|146x22px]]<br/> <br/> '''Achtung''': sollten Sie wie in obigem Beispiel eine [https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsXtraMessageBoxtopic XtraMessageBox] verwenden (was optisch besser in das Gesamtbild passt), so benötigen Sie die [https://www.devexpress.com/Products/NET/Controls/WinForms/ DevExpress Komponenten] in der jeweisl vorrausgesetzten Version (siehe Systemvorrausetzungen). Die nötigen Verweise sind<br/> [[File:|233x42px]]<br/> [[File:|178x24px]]​<br/> sowie<br/> <br/> [[File:|209x42px]]<br/> <br/> Desweiteren empfiehlt es sich wenn Sie [https://www.devexpress.com/Products/NET/Controls/WinForms/ Devexpress Komponenten] verwenden, eine [https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsXtraFormtopic XtraForm] statt einer Form zu erstellen und in deren Konstruktor folgenden Codeschnipsel zu übernehmen:<br/> <br/> [[File:|255x125px]]<br/> Für die Bonusskins ist ein weiterer Verweis auf<br/> <br/> [[File:|185x24px]]<br/> <br/> erforderlich.<br/> Nach erfolreicher erweiterten Konfiguration geben Sie bitte true zurück<span style="color:#0000FF"><span style="font-size:14px line-height: 19.6000003814697px">.</span></span>  
#Der Interface Member '''JobEntry''' wird aufgerufen sobald man innerhalb der Business Process Management GUI auf Erweiterte Konfiguration eines Jobs drückt. Hier öffnet man in der Regel eine Maske welche zur erweiterten Konfiguration genutzt werden kann. Es können zusätzlich auch Prüfungen stattfinden, beispielsweise ob ein Mandant gewählt wurde oder nicht. Wenn diese Funktion False zurückgibt, wird der Job nicht gespeichert und das hinterlegte Delete Script innerhalb der [[/doku.php?id=wiki:guipluginassets|Assets]]-Struktur wird aufgerufen, auf das Thema [[/doku.php?id=wiki:guipluginassets|Assets]] gehen wir später ein. Hier ein Beispiel:<br/> <br/> [[File:GUI Plugins 11.png|RTENOTITLE]]<br/> Die [[/doku.php?id=wiki:pluginbase|Basisklasse]] (base.) beinhaltet verschiedene Basisfunktionen wie beispielsweise GetLogger.<br/> ​Die aufgerufene Form sollte als Best Practise immer die folgenden Konstruktor-Parameter definiert haben:<br/> <br/> [[File:GUI Plugins 12.png|RTENOTITLE]]<br/> Um einen FluentLogger zu verwenden (was Sie wirklich tun sollten!), setzen Sie bitte einen Verweis auf die '''HTKFunctionsLibrary ''' welche Sie auch im Plugins Ordner ihrer Installierten Business Process Management GUI finden.<br/> <br/> <span style="color:#FF0000">FunktionsLibrary</span><br/> <br/> '''Achtung''': sollten Sie wie in obigem Beispiel eine [https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsXtraMessageBoxtopic XtraMessageBox] verwenden (was optisch besser in das Gesamtbild passt), so benötigen Sie die [https://www.devexpress.com/Products/NET/Controls/WinForms/ DevExpress Komponenten] in der jeweisl vorrausgesetzten Version (siehe Systemvorrausetzungen). Die nötigen Verweise sind<br/> <span style="color:#FF0000">verweise DevExpress</span><br/> sowie<br/> <br/> <span style="color:#FF0000">DevExpress</span><br/> <br/> Desweiteren empfiehlt es sich wenn Sie [https://www.devexpress.com/Products/NET/Controls/WinForms/ Devexpress Komponenten] verwenden, eine [https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsXtraFormtopic XtraForm] statt einer Form zu erstellen und in deren Konstruktor folgenden Codeschnipsel zu übernehmen:<br/> <br/> <span style="color:#FF0000">DevExpress Methoden</span><br/> Für die Bonusskins ist ein weiterer Verweis auf<br/> <br/> <span style="color:#FF0000">DevExpressBonus</span><br/> <br/> erforderlich.<br/> Nach erfolreicher erweiterten Konfiguration geben Sie bitte true zurück<span style="color:#0000FF"><span style="font-size:14px line-height: 19.6000003814697px">.</span></span>  
#Legen Sie nun folgende Ordnerstruktur in Ihrem Projekt an. Die Dateien können je nach bedarf hinzugefügt werden. DIe Ordnerstruktur sollten Sie allerdings standardmäßig so anlegen. Bitte achten Sie auf Korrekte Benennung der Ordnerstruktur.<br/> <br/> [[File:|285x306px]]<br/> '''Achtung: '''<u>Alle [[/doku.php?id=wiki:guipluginassets|Assets]]'''müssen''' bei Buildvorgang Eingebettete Ressource hinterlegt haben!<br/> [[File:|266x37px]]</u>  
#Legen Sie nun folgende Ordnerstruktur in Ihrem Projekt an. Die Dateien können je nach bedarf hinzugefügt werden. DIe Ordnerstruktur sollten Sie allerdings standardmäßig so anlegen. Bitte achten Sie auf Korrekte Benennung der Ordnerstruktur.<br/> <br/> <span style="color:#FF0000">Assetbaum</span><br/> '''Achtung: '''<u>Alle [[/doku.php?id=wiki:guipluginassets|Assets]]'''müssen''' bei Buildvorgang Eingebettete Ressource hinterlegt haben!<br/> <span style="color:#FF0000">Bildvorgang</span></u>  
#'''Cleanup: ''' Der Ordner Cleanup beinhaltet Scripte welche benötigt werden um die Tabellenstrukturen "sauber" zu halten. Auch wenn Sie alles korrekt gemacht haben, sollten Sie trotzdem ein solchen Script hinterlegen. Die Scripte werden automatisch ausgeführt. Es empfiehlt sich als Best Practise den Namen der zu "cleanenden" Tabelle als Scriptname zu hinterlegen.<br/> <br/> [[File:|190x22px]]<br/> <br/> Script-Beispiel:<br/> 
#'''Cleanup: ''' Der Ordner Cleanup beinhaltet Scripte welche benötigt werden um die Tabellenstrukturen "sauber" zu halten. Auch wenn Sie alles korrekt gemacht haben, sollten Sie trotzdem ein solchen Script hinterlegen. Die Scripte werden automatisch ausgeführt. Es empfiehlt sich als Best Practise den Namen der zu "cleanenden" Tabelle als Scriptname zu hinterlegen.<br/> <br/> [[File:|190x22px]]<br/> <br/> Script-Beispiel:  
#'''Delete: ''' Der Ordner Delete beinhaltet Scripte, welche ausgeführt werden wenn die Methode '''JobEntry ''' false zurückgibt. Auch hier empfiehlt sich als Namensgebung der Tabellenname.<br/> <br/> [[File:|190x22px]]<br/> Script-Beispiel:<br/> <br/> Im speziellen Fall des Delete-Scriptes stehen folgende [[/doku.php?id=wiki:guiplatzhalter|Platzhalter]] zur Verfügung. @Mandant und @JobId, bitte achten Sie bei Verwendung der Variablen auf die korrekte Bennenung.  
#'''Delete: ''' Der Ordner Delete beinhaltet Scripte, welche ausgeführt werden wenn die Methode '''JobEntry ''' false zurückgibt. Auch hier empfiehlt sich als Namensgebung der Tabellenname.<br/> <br/> [[File:|190x22px]]<br/> Script-Beispiel:<br/> <br/> Im speziellen Fall des Delete-Scriptes stehen folgende [[/doku.php?id=wiki:guiplatzhalter|Platzhalter]] zur Verfügung. @Mandant und @JobId, bitte achten Sie bei Verwendung der Variablen auf die korrekte Bennenung.  
#'''Graphics → Icons: ''' In diesen Ordner können Grafikdateien hinterlegt werden, welche als Grundlage für die RibbonButtons dienen. Es empfiehlt sich *.ico Dateien zu verwenden. Beispiel:<br/> <br/> [[File:|186x57px]]  
#'''Graphics → Icons: ''' In diesen Ordner können Grafikdateien hinterlegt werden, welche als Grundlage für die RibbonButtons dienen. Es empfiehlt sich *.ico Dateien zu verwenden. Beispiel:<br/> <br/> [[File:|186x57px]]  
1.381

Bearbeitungen

Navigationsmenü