Automatisering van snapshot-flatbestanden
Een integraal onderdeel van een probleemloze Studentinformatiesysteem-integratie is de mogelijkheid om de gegevensstroom naar Blackboard, zoals die door de integratie wordt gepresenteerd, te automatiseren en te monitoren. Je hebt de beschikking over twee nieuwe voorzieningen die dit proces mogelijk maken:
De resultaten van POST-URL's van de integratie bevatten een proces-UID voor de gegevensset. Bijvoorbeeld:
Geslaagd: Feedbestand geüpload. Gebruik de referentiecode afc3d6e84df84f51944a06cccee8f59a om deze records in de logboeken bij te houden.Er is een nieuwe status-URL voor de gegevensset toegevoegd. Als er contact wordt gemaakt met de proces-ID van de gegevensset, retourneert de URL een XML-blok met informatie over de status van de gegevensset. Het is mogelijk dat dit pas wordt opgeroepen wanneer de POST-bewerking voor het originele gegevensbestand al enige tijd is voltooid.
https:// ... /webapps/Bb-data-integration-flatfile-[UW ID]/endpoint/dataSetStatus/afc3d6e84df84f51944a06cccee8f59aretourneert dit:
<dataSetStatus> <completedCount>5</completedCount> <dataIntegrationId type="blackboard.platform.dataintegration.DataIntegration">_123_1</dataIntegrationId> <dataSetUid>afc3d6e84df84f51944a06cccee8f59a</dataSetUid> <errorCount>0</errorCount> <lastEntryDate>2013-03-20T10:45:48-05:00</lastEntryDate> <queuedCount>0</queuedCount> <startDate>2013-03-20T10:45:48-05:00</startDate> <warningCount>0</warningCount> </dataSetStatus>
Deze toevoegingen maken het mogelijk om via scripts geautomatiseerde integraties met Momentopname-bestanden te monitoren.
Dit onderwerp geeft een overzicht van het automatiseren en monitoren van een integratie op basis van een Momentopname-bestand. De gegeven voorbeelden zijn bedoeld voor een UNIX- of Linux-platform, waarbij CRON wordt gebruikt voor de automatisering en BASH als de scripttaal voor de UNIX-shell. De concepten zijn echter toepasbaar op elke taal die ondersteuning biedt voor POST-/GET-bewerkingen, het parseren van tekenreeksen en datums, het uitvoeren van databasequery's en het versturen van e-mail. Dit betekent dat PERL, JAVA, PHP en Ruby geschikt zijn voor ontwikkelen, net als andere shell- of batchtalen.
Het doel is het bieden van een werkende implementatie die kan worden geraadpleegd voor het ontwikkelen van een gecontroleerde en geautomatiseerde SIS-integratie op basis van een Momentopname-bestand. De implementatie bevat twee componenten: automatisering en monitoring. De naslagimplementatie is beschikbaar via de koppeling onder aan deze pagina.
Opmerking
Het toevoegen van vastgelegde foutberichten via de aangeboden naslagimplementatie is momenteel alleen compatibel met zelfgehoste systemen. Deze mogelijkheid wordt omschreven in het script en vereist het verwijderen van opmerkingen uit de code voor gebruik in omgevingen met zelfhosting. In een toekomstige versie van dit document zal toegang tot deze logboekberichten vanuit het script worden beschreven.
Use case: Automatisering van de verwerking van Studentinformatiesysteem-bestanden
Het volgende praktijkscenario fungeert als de basis voor de naslagimplementatie en als een richtlijn voor het zelf ontwikkelen van een dergelijk proces.
Samenvatting
Het doel is om de verwerking van door het SIS gegenereerde gegevens in een Momentopname-bestand te automatiseren en rapporten per e-mail te versturen naar bepaalde beheerders. De oplossing moet periodiek de aanwezigheid van nieuwe gegevensbestanden, het object en de gegevensbron bepalen en de gegevens aan Blackboard presenteren. Verwerkte bestanden moeten voor archiveringsdoeleinden in een afzonderlijke map worden geplaatst. De oplossing moet ook de mogelijkheid bieden om gegevensbestanden handmatig te verwerken. In alle gevallen moeten e-mails over het slagen of mislukken van de bewerkingen naar bepaalde beheerders worden verstuurd. De e-mail moet beschikbare gegevens bevatten van het proces en eventuele foutberichten.
Acteurs
Studentinformatiesysteem, Besturingssysteem scheduler, Blackboard
Voorwaarden
In een opgegeven map genereert het SIS Momentopname-bestanden voor Learn-objecten zoals gebruikers, cursussen, inschrijvingen en docententoewijzingen.
Beschrijving
Het SIS plaatst Momentopname-bestanden in een gegevensmap die in het script is opgegeven
De planningsfunctie van het besturingssysteem (CRON) start het script sis_snpshtFF_auto
Het script sis_snpshtFF_auto controleert de gegevensmap op de aanwezigheid van bestanden
Het script sis_snpshtFF_auto bepaalt het Learn-objecttype van elk bestand
Het sis_snpshtFF_auto-script roept het sis_snpshtFF_manual-script dienovereenkomstig aan en in de objecthiërarchie: gebruikers, cursussen, lidmaatschappen
Het Studentinformatiesysteem_snpshtFF_manual script gebruikt POST om de gegevens naar Blackboard te verzenden en bepaalt de voltooiingsstatus
Als er fouten optreden en sis_snpshtFF_manual hiervoor is geconfigureerd, worden de integratielogboeken bevraagd naar foutberichten
Het script sis_snpshtFF_manual stelt een e-mail op met daarin statusgegevens en verstuurt deze naar de geconfigureerde e-mailadressen
Stappen 5-8 worden herhaald voor elk gegevensbestand
Als het script sis_snpshtFF_auto de verwerking van alle gegevensbestanden heeft voltooid, verstuurt het script een status-e-mail naar de geconfigureerde e-mailadressen
Nacondities
De gegevens die door de door Studentinformatiesysteem gegenereerde platte bestanden worden geleverd, worden achtereenvolgens per gegevensobject toegevoegd aan Blackboard en de originele bestanden worden gearchiveerd met de verwerkingstijdstempel die aan de oorspronkelijke bestandsnaam wordt toegevoegd. De in het script geconfigureerde beheerders krijgen status- e-mails per verwerkt bestand en een algemene status-e-mail voor de verwerkingstaak als geheel.
De oplossing
Afgezien van het genereren van de gegevensbestanden door het SIS, wat buiten het bereik van dit document valt, bestaat het automatiseringsprobleem uit drie componenten:
Het "Wanneer": bepalen wanneer de verwerking van de verstrekte gegevens moet worden uitgevoerd,
Het "Wat": welke dataobjecten en databronnen die data hebben verstrekt, omvatten, en
Het "Hoe": verwerking en monitoring van die gegevens
In het geval van het bovenstaande praktijkscenario kunnen we een set configureerbare scripts maken die kunnen bepalen of een gegevensbestand bestaat (moet deze taak iets doen), vaststellen wat het objecttype is van de gegevens, een verwerkingsscript aanroepen met de juiste parameters om aan de de doelen van de integratie te voldoen, de gegevens verwerken, en bij voltooiing het gegevensbestand archiveren.
Deze drie componenten worden in de volgende secties beschreven. Door ze alle drie te plaatsen, krijg je een controleerbaar geautomatiseerd proces voor het verplaatsen van Studentinformatiesysteem-gegevens naar Blackboard via het integratietype Snapshot Flat File.
Opmerking
Het BASH-script bevat heel veel opmerkingen en is hier daarom niet opgenomen. We richten ons met name op de algehele gegevensstroom en de details van de verwerking.
Het "hoe": sis_snpshtFF_auto.sh en sis_snpshtFF_manual scripts gebruiken
Op basis van het bovenstaande praktijkscenario voert het onderstaande BASH-script (sis_snpshtFF_auto.sh) de volgende bewerkingen uit:
Controleert of er bestanden staan in de opgegeven map
Bepaalt het type object en bewerking op basis van de header-informatie in het bestand
Sorteert de bestanden zodat deze in de juiste volgorde worden verwerkt. Bijvoorbeeld: Gebruikers, dan cursussen, dan lidmaatschappen.
Roept een subscript aan (sis_snpshtFF_manual.sh) voor verwerking, monitoring en het per e-mail versturen van de verwerkingsstatus
Archiveert het gegevensbestand als dat is gebeurd
Verwerkt het volgende bestand als dat bestaat
Als laatste wordt er per e-mail een rapport verzonden met informatie over het cumulatieve resultaat van de aanroep van het automatiseringsscript.
Dit biedt de volgende algemene stroom die hieronder wordt weergegeven. Aan de linkerkant bevindt zich de algemene stroom van het automatiseren van de verwerking van Snapshot Flat File, zoals gedemonstreerd in de meegeleverde referentieoplossing. Aan de rechterkant is er een verdere uitsplitsing van het gescripte deel van het proces. We hebben twee scripts sis_snpshtFF_auto.sh aan de linkerkant en sis_snpshtFF_manual.sh aan de rechterkant. De bewerkingen in Afbeelding 2 worden ook als opmerkingen opgenomen in de implementatie van automatiseringsreferenties van elk script.

Het "Wat": sis_snpshtFF_auto.sh
Kort gezegd, laadt het script sis_snpsht_auto script bestanden die zijn gevonden in de geconfigureerde gegevensmap, wordt vervolgens de gegevens-header van het bestand geanalyseerd om te bepalen naar welk type object wordt verwezen en wordt het bestand voor latere verwerking toegevoegd aan de juiste lijst. De header-analyse bepaalt het type object waarnaar het bestand verwijst en zo de volgorde in de wachtrij voor verwerking van het Momentopname-bestand. Dit sorteren maakt het mogelijk om één afleverpunt te gebruiken voor de platte bestanden die door het SIS worden gegenereerd.
Nadat alle bestanden zijn geanalyseerd en op objecttype zijn gegroepeerd in lijsten, worden deze in logische volgorde verwerkt: gebruikers, cursussen, lidmaatschappen. Elke bestand wordt voor verwerking overgedragen aan het script sis_snpshtFF_manual, dat overigens ook kan worden uitgevoerd vanaf de opdrachtregel, samen met de juiste argumenten voor elk objecttype. Het sis_snpshtFF_manual script neemt de binnenkomende argumenten en gebruikt de juiste url om het gegevensbestand naar Blackboard te POSTEN. Als dit is voltooid, wordt de controlefunctie van het script gestart en wordt er vervolgens een rapport samengesteld dat per e-mail naar de geconfigureerde lijst met ontvangers wordt gestuurd. Het bestand wordt geretourneerd naar het script sis_snpsht_auto, dat het volgende bestand verstuurt voor verwerking. Dit proces wordt herhaald totdat alle bestanden zijn verwerkt. Als dat is gebeurd, verstuurt sis_snpshtFF_auto per e-mail een eindrapport naar de lijst met geconfigureerde ontvangers.
De "Wanneer": CRON gebruiken om snapshots te plannen
Het doel van automatisering is om de scriptset uit te voeren zonder tussenkomst van gebruikers. UNIX biedt deze mogelijkheid met CRON, een ingebouwde planningstoepassing. CRON is een systeemproces dat regelmatig de systeem-crontab controleert. Dit is een systeembestand met een lijst met opdrachten en instellingen en wanneer deze moeten worden uitgevoerd. Vermeldingen worden vervolgens beoordeeld om te bepalen of ze nu moeten worden uitgevoerd of op een later tijdstip, zoals aangegeven in de crontab-vermelding.
Belangrijk
Bij het instellen van crontab-vermeldingen moet rekening worden gehouden met de frequentie van cron-taken en de verwerkingstijden voor bewerkingen, aangezien REFRESH-bewerkingen langer kunnen duren dan STORE-bewerkingen. De verwerking van gegevens voor REFRESH versus STORE kan worden afgehandeld via afzonderlijke crontab-vermeldingen en afzonderlijke gegevensbronmappen in de scriptargumenten, als het onderstaande script wordt gebruikt.
CRON-expressies voor crontab-items
Formaat: CRON gebruikt een zeer specifiek formaat voor het plannen van gegevens. Deze worden opgenomen in een door spaties gescheiden lijst van vijf vereiste gegevensvelden:
Veld | Beschrijving | Toegestane waarde |
|---|---|---|
MIN | Minutenveld | 0 tot 59 |
HOUR | Urenveld | 0 tot 23 |
DOM | Dag van de maand | 1-31 |
MON | Maandveld | 1-12 |
DOW | Dag van de week | 0-6 |
CMD | Opdracht | De uit te voeren opdracht. |
In de praktijk kan deze notatie zo eenvoudig of als complex zijn als nodig is.
Voorbeelden:
Een voorbeeld van een eenvoudige crontab-vermelding is het uitvoeren van een taak aan het begin van elk uur:
0 * * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh
0 - 0de minuut
* - Elk uur
* - Elke dag
*- Elke maand
* - Elke dag van de week
of eenmaal om middernacht elke dag:
0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh
0 - 0de minuut
0 - Elk uur
* - Elke dag
* - Elke maand
* - Elke dag van de week
Een taak tweemaal per dag uitvoeren tijdens de werkweek:
0 11,16 * * 1-5 /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh
0 - 0de minuut (begin van het uur)
11,16 - 11:00 en 04:00
* - Elke dag
* - Elke maand
1-5 - maandag tot en met vrijdag
of elke twee uur op maandag tot en met vrijdag:
0 */2 * * Mon-Fri /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh
0 - 0de minuut (begin van het uur)
*/2 - Ieder even uur 12, 2, 4, 6, 8, 10, 12, 14, etc. of om het uur.
* - Elke dag
* - Elke maand
Mon-Fri - maandag tot en met vrijdag
U kunt ook de man-pagina voor uw systeem bekijken via de command line met behulp van het commando $ man 5 crontab
Een crontab toevoegen
Aan de hand van de bovenstaande cron-instellingen kunnen we een crontab-vermelding toevoegen om het uitvoeren van de Momentopname-taak te plannen.
Als je het root-crontab-bestand wilt bewerken, typ je als de root-gebruiker de volgende opdracht op de prompt van de UNIX/Linux-shell:
$ crontab -e
Het argument -e zorgt ervoor dat er een vi-editor wordt geopend.
Om het script voor de geautomatiseerde verwerking van het platte bestand elke dag om middernacht uit te voeren, voeg je het volgende toe aan de lijst met taken:
root@dev$ crontab -e
Typ i om naar de bewerkingsmodus te gaan en typ vervolgens:
0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh
Druk op Escape om de bewerkingsmodus te verlaten.
Typ :wq om je bewerking op te slaan en de editor te verlaten.
Verwijzingen
De volgende personen hebben ideeën, input en suggesties gegeven voor de BASH-naslagimplementatie:
Van Kelt Dockins hebben we zijn op BASH gebaseerde implementatie gekregen voor inhoudsanalyse van het Momentopname-bestand (niet meer online beschikbaar).
Ross Brown en Jerald Todd hebben in een vroeg stadium enkele problemen ontdekt in de eerste versie van de naslagimplementatie.
Bestanden
Het downloadbare archief SIS_SnpshtFF_Bash_Scripts (zip) bevat functionele en becommentarieerde code die de concepten toelicht die in dit onderwerp zijn besproken.
Studentinformatiesysteem Snapshot Flat File Bash Scripts Archief
Meer informatie
Overzicht van Studentinformatiesysteem Framework