Login / Status
developer.Resource
Home . Documentation . Document Library . Tutorials
Sponsors
hosted by punkt.deTYPO3 and Open Source Magazine

1.13. En simpel nyheds-arbejdsgang (workflow)

I nogle tilfælde har man brug for mere end blot at give brugere tillladelse til at redigere dele af et websted - man kan få brug for at have en bestemt arbejdsgang hvor opgaven med at skabe indhold gives til en person som laver indholdet men som ikke kan udgive det uden at det bliver kigget igennem af den der er ansvarlig for det endelige indhold. Sådan en godkendelses-cyklus er lige nøjagtig det arbejdsgange er til. I andre tilfælde er de bare en nyttig måde at samarbejde om indhold fordi man kan sende indhold frem og tilbage mellem medlemmer af en arbejsgruppe.

Hvad er det så i praksis? På "FC Bigfeet"-sitet kan du allerede finde en simpel arbejdsgang. Arbejdsgangen er designet til at lade brugeren "news" modtage opgaven med at lave et nyhedselement til webstedet. Når han har gjort det sender han opgaven tilbage til afsenderen som vil gennemse indholdet og hvis det er OK vil han afslutte processen, hvilket betyder at nyheden automatisk flyttes til nyhedsarkivet og som en mulighed også til forsiden!

Lad os først kigge på brugeren "news". Prøv at logge ind som "news" (adgangskoden er "football"):

Vi er vant til at se Side-modulet og lidt andet forskelligt - men "news"-brugeren er blevet begrænset til kun at kunne se Opgaver-modulet! Det er nok for ham da han kun skal checke sin Indbakke med opgaver. Den er tom lige nu, så han har ikke fået tildelt nogen opgaver endnu.

Starte en arbejdsgang

Nå, log ud igen og returner til backend'en som "admin". Du skal nu starte en ny arbejdsgang ved at tildele at opgave til brugeren "news".

Lav opgave

Så gå til Opgaver-modulet, klik på "Opgaver" ...

Lav så en ny arbejdsgang. Der er kun en slags lige nu (du vil senere få at se hvordan man konfigurerer flere arbejdsgange):

Nu skal vi udfylde en formular som denne:

Som det vigtigste skal du vælge et mål (#1). Dette kan enten være en gruppe eller en specifik bruger. Vi har valgt brugeren "news" som vi havde plankagt. En titel (#2) og en beskrivelse (#4) ville ikke skade - det er simpelthen den opgavebeskrivelse som brugeren kommer til at se - så du skal sikre dig at han ved hvad han skal foretage sig når han ser dette. Deadline (#3) vil sætte deadline'n for opgaven og senere vil den hjælpe dig med at holde styr på hvilke opgaver der har overskredet deadlinen (forhåbentlig ikke nogen af dine selvfølgelig).

Endelig kan du sætte systemet til at sende dig en email (#5) til mål-brugeren når du trykker på "Opret"-knappen - smart, hvis målbrugeren ikke ligefrem er en TYPO3-junkie, der er logget ind hele tiden - så vil det sandsynligvis være en god ide at sende ham en mail! (Dette kræver at PHP-funktionen mail() virker!)

Efter oprettelserne vil du blive sendt tilbage til dit overblik over opgaver:

De udgående opgaver er dem du har lavet og som venter på en handling fra en anden person, i dette tilfælde "news".

Klik på titlen hvis du vil se detaljerne:

Som du kan er alle informationerne der. Lige nu har brugeren "news" ikke tildelt opgaven en status.

Acceptere opgaven

Log ind som "news":

Tip: Hvis du starter et nyt Microsoft Internet Explorer-vindue fra ikonet på skrivebordet (i modsætning til at åbne et nyt vindue med Ctrl + N) så kan du logge ind som en anden bruger - "news"-brugeren - og på den måde have to forskellige vinduer kørende med hver sin bruger. Dette er muligt, fordi Internet Explorer ikke deler cookie'r mellem de to vinduer.

I Opgaver-modulet vil "news"-brugeren se dette:

Fint. Opgaven er der! Klik i den venstre ramme. Nu vil du se detaljerne ligesom før (som "admin"):

Som "news" vælges "Tilføj status" for at Begynde opgave nu, der indtastes et statusnotat som fx "OK!" og der trykkes på knappen.

Nu vil du se en formular til en nyhed vise sig:

Dette element er lige blevet oprettet for dig som en del af "Begynd opgave nu"-status'en, som du lige tilføjede. Dette element er knyttet til opgaven nu og alt du behøver er at indtaste indholdet. Når det er gjort og du trykker på "Gem og luk dokument" kommer du tilbage til Opgaver-modulet. Hvis du klikker på titlen på opgaven kan du se de opdaterede detaljer:

Som du kan er elementet vedhæftet her og ved at klikke på rediger-blyanten kan du redigere det igen - indtil du er klar til at fortælle "admin" at det nu er helt færdigt!

Når elementet er redigeret og klar til at blive udgivet (efter din mening) ændrer du status til "Send videre til en anden bruger/gruppe" (dette kunne også have været brugt til at sende opgaven til en kollega hvis det hellere skulle være en anden  der skulle løse opgaven!), vælger modtager (i dette tilfælde "Afsenderen"); tilføjer et notat hvis du finder det nødvendigt og trykker på Send ny status.

Nu er din opgave-liste blank, klar til det næste job.

Afslutte arbejdsgangen

Tilbage som "admin" kan du se at Opgaven er blevet returneret til dig:

Når du klikker på elementets titel her kan du se detaljerne. Klik på redigerings-blyanten for at gennemse indholdet:

Bortset fra at checke indholdet af nyhedselementet (lidt tam nyhed, er det ikke...) skal du også vælge om dette element er værdigt til at optræde på forsiden. Det felt var ikke tilgængeligt for brugeren "news" - det er et excludeField.

Når du er tilfreds med elementet aktiverer du det sidste skridt ved at vælge "Afslut arbejdsgang (publicer)" i "Tilføj status"-selektorboksen:

Det var det. Dette skridt flyttede endeligt nyhedselementet til nyhedsarkivet og lagde det online på forsiden:

"Færdig"

Det sidste vi skal have gjort er at smide Opgaven i papirkurven: Tjek af i "Færdig" og vælg at "Slette markerede opgave emner":

Konfigurere en arbejdsgang

En arbejdsgang som den vi lige er rendt igennem konfigureres som en post i roden af sidetræet. Som med alle poster i roden af sidetræet skal man være "admin" for at redigere og oprette dem:

Sådan en post indeholder disse felter:

Bortset fra en helt almindelig titel og beskrivelse (#1) definerer posten først og fremmest fra hvilken tabel (#2) i TYPO3 elementer skal laves! Det betyder at arbejdsgang-systemet kan bruges til at kontrollere tilblivelsen ikke blot af sider, indholdselementer eller nyheder - men ethvert element!

Naturligvis er nogle tabeller mere interessante end andre i denne sammenhæng men princippet er det samme. Som du ønsker.

"Draft Page" (skitsesiden)

Det næste vigtige princip er "skitsesiden" ("Draft Page" #3).

SysFolder'en "News items draft page" er oprettet som et sikkert lager hvor "news"-brugeren kan lave hvad han vil uden at generere nogen med det. Denne sysFolder fungerer som Skitseside. Når brugeren "news" sætter status til "Begynd opgave nu" bliver opgavens vedhæftede nyhedselement automatisk oprettet i den mappe!

Nyhedselementet bliver i sysFolder'en indtil arbejdsgangen bliver afsluttet af afsenderen - så bliver den fjernet derfra og indsat på "News"-siden - som "Move to page when finalizing"-feltet (#6) tydeligvis indikerer.

Target groups og review users

Mellem "Draft page" og "Final page" finder du felterne som sætter "tilladelser" for arbejdsgangen. Med "Target groups for workflow" specificerer du hvilke brugere der kan tildeles opgaven med at lave dette element. I dette tilfælde er det kun medlemmer af gruppen "News editor" der kan modtage disse opgaver.

Arbejdsgangen er simpel her: "[Redaktør] -> [Skribent] -> [Redaktør]". I nogle tilfælde vil man måske have en tredje person involveret. Det vil få arbejdsgangen til at se således ud: "[Redaktør] -> [Skribent] -> [Korrekturlæser] -> [Redaktør]". Hvis det er tilfældet kan du lave en relation til en korrekturlæser (reviewer) i felt #5.

Sluttelig fortæller "Unhide when finalizing"-flaget processen om element skal synliggøres når opgaven afsluttes.

Glemte vi noget? Åh ja, "Groups allowed to assign workflow"-feltet - det talte vi ikke om, så lad os læne os tilbage og lade det lille smarte "?"-ikon fortælle:

Husk det nu...

Krav

For at denne arbejdsgang kommer til at virke - mht. tilladelser for brugeren "news" - skal du sikre dig et par ting.

Gruppen

"news"-brugeren er medlem af "News editor"-gruppen. Gruppen har "Access Lists" slået til ligesom "GENERAL"-gruppen som vi allerede har kigget på. Indstillingerne er naturligvis anderledes:

Som du kan se nedenfor er kun Brugere- og Opgaver-modulerne aktiveret, tabellen News er den eneste der kan redigeres i, og "Allowed Excludefields" er naturligvis kun valgt i forbindelse med News-tabellen:

Tilladelserne for "Draft page"

Disse skal naturligvis være sat rigtigt. I dette tilfælde - da vi laver elementer på en side - kan vi lave det med nedenstående indstilling; gruppen "News editor" er ejer og har tilladelse til at lave nyt sideindhold:

DB mount'et

Og - selv hvis der ikke er noget sidetræ tilgængeligt for brugeren "news" - skal han have sat et DB mount:

Det er fordi TYPO3's standard-tilladelsessystem tjekker om den side, hvor en post oprettes, er indenfor DB mount'et for brugeren.

Workflow To-Do

Vi har også selv en lille To-Do-liste mht. udvikling af workflow-systemet i TYPO3. Det mest indlysende behov er muligheden for at (gen-) indsætte et eksisterende element i arbejdsgangen. Det er endnu ikke muligt. Eller måske er det blevet muligt siden denne gennemgang blev skrevet. I så fald - mind mig om at fjerne denne notits... :-)