Component typen
Opzet
Alle componenten gaan uit van bepaalde invoer (objecten die beschikbaar zijn aan het begin van de executie) en bepaalde uitvoer (objecten die worden uitgelezen na executie).
Overzicht Inrichtingscomponenten
Er zijn verschillende soorten componenten:
CMS componenten |
Met een CMS component kunnen Internet elementen gemaakt worden die binnen layout templates of content gebruikt kunnen worden. Denk hierbij bijvoorbeeld aan een forum, navigatie, automatisch gegenereerd nieuws of een up-to-date beurskoers. |
DMS assistenten |
Hiermee kunnen DMS assistenten aangemaakt worden. Denk hierbij aan zaken als “nieuw project” of “nieuwe medewerker”. |
DMS overzichten |
Hiermee kunnen speciale overzichten worden toegevoegd. Denk hierbij aan een geavanceerde zoekinterface voor dossiers, of een overzicht met documenten die heel lang niet bijgewerkt zijn. Een overzicht kan naar eigen inzicht het middenblok van het DMS vullen, en een link naar het overzicht verschijnt in het linkerblok van het DMS. |
Zoek componenten (metazoeken) |
Hiermee kan de globale zoekfunctie van OpenIMS uitgebreid worden. Denk hierbij aan het doorzoeken van databases of bijvoorbeeld het integreren met externe zoekmachines als Google. |
Batch componenten |
Code die met een bepaalde frequentie (bijvoorbeeld eens per uur) wordt uitgevoerd. |
Trigger op inlezen XML data |
Hiermee kan extern opgeslagen data in OpenIMS geïntegreerd worden. |
Trigger op wegschrijven XML data |
Hiermee kan data (XML objecten) buiten OpenIMS opgeslagen worden of kan deze, bijvoorbeeld met SOAP/XML, verzonden worden aan een ander systeem. |
Virtuele XML tabellen |
Waar met triggers gegevens in OpenIMS gekoppeld kunnen worden met externe systemen, kan met een virtuele tabel een koppeling gelegd worden met informatie die voor 100% buiten OpenIMS is vastgelegd. |
Versnelde XML tabellen |
Indien een koppeling met een virtuele XML tabel teveel tijd kost (latency, performance, etc...) kan middels een versnelde XML tabel deze tabel worden gecached. |
Trigger op wegschrijven bestand |
Hiermee kunnen bestanden (documenten) buiten de OpenIMS database opgeslagen worden in bijvoorbeeld een database of op een fileserver. |
Trigger op login |
Hiermee kan gebruik gemaakt worden van externe systemen voor beveiliging zoals LDAP, Microsoft Active Directory of Novell Directory Services (eDirectory). |
Speciale en ondersteunende functionaliteit |
Hier kunnen PHP functies geplaatst worden die gebruikt kunnen worden door alle inrichtingscomponenten. Dit is nuttig om generieke functionaliteit eenmalig te kunnen vastleggen.
Er zijn ook bepaalde ondersteunende functies die door OpenIMS worden aangeroepen. Door een standaard component te importeren kunnen deze functies worden aangepast. Hiermee kan het gedrag van OpenIMS worden gewijzigd of kan speciale funtionaliteit worden toegevoegd. Voorbeelden hiervan zijn SKIN Management en HTML Filtering. |
CMS component
Naam |
Leesbare naam van het component (voor beheer). |
Markeertekst |
Hiermee worden elementen in de content of het vormgevingstemplate aangeduid. Als de markeertekst bijvoorbeeld year is dan wordt het te gebruiken element 2024. |
Content generator |
Deze logica dient de variabele $content te vullen. Het element (bijvoorbeeld 2024) wordt door OpenIMS vervangen door de inhoud van $content. De IMS_Preview() functie kan gebruikt worden om onderscheid te maken tussen standaard en concept modus. Er is een variabele $context beschikbaar met alle mogelijke omgevingsinformatie. Middels bijvoorbeeld N_EO($context); kan deze bestudeerd worden. |
DMS assistent
Naam |
Leesbare naam van de DMS assistent die ook gebruikt wordt als tekst in de hyperlink in het assistenten blok van het DMS. |
Titel |
Tooltip (gele rechthoek) van deze assistent. |
Icoon (url) |
URL van het icoon dat bij de assistent gebruikt moet worden. Dit moet 16x16 pixels zijn. Als niets wordt ingevuld, wordt het toverstokje als icoon gebruikt. |
Sorteerwaarde |
Wordt gebruikt om de volgorde van assistenten onderling te bepalen. Als niets wordt ingevuld, worden de assistenten alfabetisch op naam gesorteerd. |
Blok |
Bepaalt in welk van de 5 blokken aan de rechterkant van het scherm de assistent getoond wordt.
In sommige submodes zijn niet al deze blokken aanwezig. |
Submode |
Bepaalt in welke submodes de assistent getoond wordt.
Als niets wordt ingevuld, wordt de assistent getoond in alle submodes behalve het dossieroverzicht. Let op: Assistenten die iets doen in de huidige folder, dienen alleen in de Documenten-submode getoond te worden. |
Conditie |
Dient $result te genereren. Als deze true bevat wordt de assistent getoond (mits het blok waar de assistent in zou moeten komen, beschikbaar is). |
URL generator |
Dient de url voor de assistent te genereren en deze in $result te zetten. Meestal zal deze url met de OpenIMS formulieren voorziening worden gemaakt. |
DMS overzicht
Naam |
Leesbare naam van het component (voor beheer). |
Titel |
Naam die gebruikt wordt in het linkerblok en, als het overzicht actief is, in de titelbalk (in het middenblok). |
Sorteerwaarde |
Bepaalt de volgorde van overzichten onderling. |
Conditie |
Dient $result te genereren. Als deze true bevat wordt het overzicht getoond. |
Content generator |
Dient $content te genereren. De inhoud van $content wordt getoond in het middenblok van het DMS. |
Zoek component
Naam |
Leesbare naam van het component (voor beheer). |
Zoek code |
Dient de vraag uit $q te lezen en het antwoord als HTML in $content te plaatsen. Het is voor de eindgebruiker prettig als de layout hierbij zo veel mogelijk overeenkomt met die van de standaard “globaal zoeken” elementen. |
Batch component
Naam |
Leesbare naam van het component (voor beheer). |
Server |
Geeft aan op welke server de batch uitgevoerd moet worden. Dit is vooral van belang in een omgeving met meerdere servers en replicatie. Indien dit veld leeg is wordt de batch op elke server waar deze aanwezig is uitgevoerd. |
Frequentie |
Geeft aan hoe vaak (eens per uur, eens per nacht) de batch code moet worden uitgevoerd. |
Batch code |
De daadwerkelijke batch code. |
Trigger op inlezen XML data
Naam |
Leesbare naam van het component (voor beheer). |
Tabel |
Tabel waar de trigger op van toepassing is. Hierbij kan * gebruikt worden voor patronen (bijvoorbeeld “shield_*”). Als dit veld leef is wordt de trigger voor alle tabellen uitgevoerd. |
Trigger code |
Deze code wordt aangeroepen direct na het opvragen van het object en direct voor dat het object in gebruik wordt genomen. Bij aanvang bevatten $table en $key de tabelnaam en de sleutel. Bij aanvang bevat $object de daadwerkelijke data. De code kan $object wijzigen. Het gewijzigde object wordt dan vervolgens direct weggeschreven naar de interne XML store en daarna door OpenIMS verder verwerkt. Triggers zijn beveiligd tegen nesting. Tijdens uitvoering van een trigger zal er dus niet nog een andere trigger uitgevoerd worden. |
Trigger op wegschrijven XML data
Naam |
Leesbare naam van het component (voor beheer). |
Tabel |
Tabel waar de trigger op van toepassing is. Hierbij kan * gebruikt worden voor patronen (bijvoorbeeld “shield_*”). |
Trigger code |
Deze code wordt uitgevoerd vlak voordat de XML data naar de interne XML store wordt weggeschreven. Bij aanvang bevatten $table en $key de tabelnaam en de sleutel. Bij aanvang bevat $object de daadwerkelijke data. De code kan $object wijzigen. Het gewijzigde object wordt dan vervolgens weggeschreven naar de interne XML store. Triggers zijn beveiligd tegen nesting. Tijdens uitvoering van een trigger zal er dus niet nog een andere trigger uitgevoerd worden. |
Virtuele XML tabellen
Naam |
Naam van de tabel (is ook beschikbaar als $table in de code) |
Indexeren |
Geeft aan of OpenIMS XML indexen mag aanmaken voor deze tabel. Als de inhoud van de tabel buiten OpenIMS kan worden aangepast dan moet dit uit staan. |
All keys code |
Moet de variabele $result vullen met alle sleutels in de tabel. |
Load code |
Moet de variabele $result vullen met het XML object met sleutel $key. |
Save code |
Indien de tabel read only is kan deze leeg gelaten worden. Anders moet $object weg geschreven worden met als sleutel $key. |
Delete code |
Indien het verwijderen van records is toegestaan moet het XML object met sleutel $key worden verwijderd. |
Opmerking: Het replicatiemechanisme van OpenIMS houdt geen timestamps bij voor objecten in virtuele tabellen. Het repliceren van virtuele tabellen wordt derhalve sterk afgeraden. Beter is om op alle betreffende systemen een koppeling te leggen naar de bron van de betreffende virtuele tabel.
Versnelde XML tabellen
Tabelnaam |
Naam van de tabel |
Brontabel |
Geeft de tabel aan waarvan de versnelde XML tabel is afgeleid (bron). |
Checksum code (optioneel) |
Vult een checksum in de variabele $result. Deze snelle code bepaald of een tabel wel of niet moet worden ververst. (Bijvoorbeeld een query van het aantal records.) |
Update frequentie |
Bepaald hoe vaak de tabel ververst moet worden. |
Opmerking: Het replicatiemechanisme van OpenIMS houdt geen timestamps bij voor objecten in versnelde XML tabellen. Het repliceren van versnelde XML tabellen wordt derhalve sterk afgeraden. Beter is om op alle betreffende systemen een koppeling te leggen naar de bron van de betreffende versnelde XML tabel.
Trigger op wegschrijven bestand
Naam |
Leesbare naam van het component (voor beheer). |
Trigger code |
Deze code wordt aangeroepen direct na dat een bestand naar disk is geschreven. $filename bevat het volledige pad van het zojuist weggeschreven bestand. Triggers zijn beveiligd tegen nesting. Tijdens uitvoering van een trigger zal er dus niet nog een andere trigger uitgevoerd worden. |
Trigger op login
Naam |
Leesbare naam van het component (voor beheer). |
Login code |
Deze code wordt aangeroepen als authenticatie middels de standaard OpenIMS functionaliteit gefaald heeft de gebruiker te identificeren. Bij aanvang zijn de variabelen $id en $password gevuld. Als de code $allowlogon op true zet wordt inloggen toegestaan, in alle andere gevallen niet. Eventueel kan met N_Redirect ($url); naar een bepaalde (bijvoorbeeld inschrijf of error) pagina gesprongen worden.
Het is noodzakelijk middels SHIELD_AddUser (IMS_SuperGroupName(), “id”, “visible name”); eventuele nieuwe gebruikers aan te maken om te zorgen dat OpenIMS de nieuwe gebruiker goed kan verwerken.
Indien NTLM gebruikt wordt, worden triggers op login nooit uitgevoerd, aangezien de afhandeling van “foute” inloggegevens volledig bij Apache ligt en niet bij OpenIMS. |
Speciale en ondersteunende functionaliteit
Naam |
Leesbare naam van de functionaliteit (voor beheer). |
Code |
PHP functiedefinities. Om conflicten met de OpenIMS core te voorkomen dienen alle functienamen bij voorkeur met SUP_ te beginnen. Om conflicten met ander componenten te voorkomen dienen functienamen bij voorkeur ook de oorsprong (organisatie) en de scope te bevatten.
Voorbeeld: SUP_MijnOrganisatie_DMSAssistenten_BepaalGebruikersrechten. Als een functie die gebruikt wordt door DMS assistenten en die gemaakt is door “MijnOrganisatie”. Deze insteek minimaliseert de kans op conflicten en maximaliseert de kans op hergebruik, inclusief organisatie overstijgend hergebruik. |