Een zeer belangrijk aspect van een probleemloze SIS-integratie is de mogelijkheid om de gegevensstroom naar Learn te automatiseren en monitoren zoals die wordt aangeboden door de integratie. Je hebt de beschikking over twee nieuwe voorzieningen die dit proces mogelijk maken:

  1. De resultaten van POST-URL's van de integratie bevatten een proces-UID voor de gegevensset. Bijvoorbeeld:

    Success: Feed File Uploaded. Use the reference code afc3d6e84df84f51944a06cccee8f59a to track these records in the logs.

  2. 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-[YOUR ID]/endpoint/dataSetStatus/afc3d6e84df84f51944a06cccee8f59a

    retourneert 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>

    Meer informatie over database-identificaties in SaaS-implementaties

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.

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. Klanten met Managed Hosting moeten de interface voor logboeken van het Learn SIS Framework gebruiken om foutberichten te raadplegen. In een toekomstige versie van dit document zal toegang tot deze logboekberichten vanuit het script worden beschreven.


Praktijkscenario: verwerking van plat bestand van SIS automatiseren

Het volgende praktijkscenario fungeert als de basis voor de naslagimplementatie en als een richtlijn voor het zelf ontwikkelen van een dergelijk proces.

Beschrijving

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 controleren of er nieuwe gegevensbestanden zijn, wat het object is en wat de gegevensbron, en dan de gegevens aanbieden aan Learn. 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.

Betrokken componenten

SIS, planningsfunctie van besturingssysteem, Learn

Voorwaarden vooraf

In een opgegeven map genereert het SIS Momentopname-bestanden voor Learn-objecten zoals gebruikers, cursussen, inschrijvingen en docententoewijzingen.

Beschrijving

  1. Het SIS plaatst Momentopname-bestanden in een gegevensmap die in het script is opgegeven
  2. De planningsfunctie van het besturingssysteem (CRON) start het script sis_snpshtFF_auto
  3. Het script sis_snpshtFF_auto controleert de gegevensmap op de aanwezigheid van bestanden
  4. Het script sis_snpshtFF_auto bepaalt het Learn-objecttype van elk bestand
  5. Het script sis_snpshtFF_auto roept het script sis_snpshtFF_manual aan en in de objecthiërarchie: gebruikers, cursussen, lidmaatschappen
  6. Het script sis_snpshtFF_manual gebruikt POST om de gegevens naar Learn te verzenden en bepaalt de voltooiingsstatus
  7. Als er fouten optreden en sis_snpshtFF_manual hiervoor is geconfigureerd, worden de integratielogboeken bevraagd naar foutberichten
  8. Het script sis_snpshtFF_manual stelt een e-mail op met daarin statusgegevens en verstuurt deze naar de geconfigureerde e-mailadressen
  9. Stappen 5-8 worden herhaald voor elk gegevensbestand
  10. 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

Voorwaarden achteraf

De gegevens die worden geleverd via de door het SIS gegenereerde platte bestanden worden opeenvolgend op gegevensobject toegevoegd aan Learn en de originele bestanden worden gearchiveerd, waarbij het tijdstempel van de verwerking wordt toegevoegd aan de originele bestandsnaam. 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 aangeleverde gegevens moet plaatsvinden,
  • Het "Wat": welke gegevensobjecten en gegevensbronnen maken deel uit van deze aangeboden gegevens, en
  • Het "Hoe": verwerking en monitoring van de 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. Als alle drie de componenten klaar zijn en werken, beschik je over een controleerbaar geautomatiseerd proces voor het overbrengen van SIS-gegevens naar Learn via het integratietype Momentopname-bestand.

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": met behulp van de scripts sis_snpshtFF_auto.sh en sis_snpshtFF_manual

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 en ten slotte 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.

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 script sis_snpshtFF_manual verwerkt de inkomende argumenten en gebruikt de juiste URL om het gegevensbestand via POST over te brengen naar Learn. 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.

Het "wanneer": Momentopnamen plannen met CRON

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.

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-uitdrukkingen voor crontab-vermeldingen

Notatie: CRON gebruikt een zeer specifieke notatie voor planningsgegevens. Deze worden opgenomen in een door spaties gescheiden lijst van vijf vereiste gegevensvelden:

VeldBeschrijvingToegestane waarde
MINMinutenveld0 tot 59
HOURUrenveld0 tot 23
DOMDag van de maand1-31
MONMaandveld1-12
DOWDag van de week0-6
CMDOpdrachtDe 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

Meer informatie over CRON

Je kunt ook de man-pagina voor je systeem bekijken via de opdrachtregel met behulp van de opdracht $ 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.

  1. 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 a vi-editor wordt geopend.

  2. 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:

    [email protected]$ crontab -e

  3. Typ i om naar de bewerkingsmodus te gaan en typ dan:

    0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  4. Druk op Escape om de bewerkingsmodus te verlaten.
  5. Typ :wq om de bewerkingen op te slaan en de editor af te sluiten.

Referenties

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.


Meer informatie

Overzicht van SIS Framework

Overzicht van gegevensbronsleutels