5. fejezet - Személyre szabás

Tartalom

Hozzáférés-vezérlési listák (ACL-ek)
Bevezetés
Meghatározás
Példák
Hivatkozás
Folyamatkezelés
Bevezetés
Példafolyamat
Az igény rögzítése
Igazgató általi jóváhagyás
Beszerzési osztály általi feldolgozás
Iktató általi feldolgozás
A példa megvalósítása
Folyamat (mint egy konténer)
Tevékenység párbeszédek
Átmenetek
Átmenet műveletek
Tevékenységek
A könyvrendelési folyamat útvonala
Folyamatbeállítás hivatkozás
Folyamat
Tevékenység
Tevékenység párbeszéd (ActivityDialog)
Átmenet
Átmenet műveletek
Hozzáférés-vezérlési listák (ACL-ek)
Használatra kész folyamat importálása
Importálás
Az OTRS előtétprogram honosítása

Hozzáférés-vezérlési listák (ACL-ek)

Bevezetés

Az OTRS 2.0-tól hozzáférés-vezérlési listák (ACL-ek) használhatók a jegyekhez, modulokhoz, várólistákhoz, stb. történő hozzáférés vezérléséhez, vagy a jegyeken elvégzendő műveletek befolyásolásához (lezárás, áthelyezés, stb.) bizonyos helyzetekben. Az ACL-ek használhatók a szerepek és a csoportok meglévő jogosultság-rendszerének kiegészítéséhez is. ACL-ek használatával képezhetők le a rendszeren belüli kezdetleges munkafolyamatok a jegyjellemzőkön alapulva.

Általános módon az ACL-eket egy jegy lehetséges lehetőségeinek csökkentéséhez használják egy meghatározott szabályrendszer alapján.

Az ACL-ek közvetlenül beírhatók a Kernel/Config.pm fájlba. Azonban ez többé nem javasolt, mivel az OTRS mostantól egy Hozzáférés-vezérlési listák grafikus felülettel érkezik az adminisztrációs panelen, amely első lépésként lehetővé teszi az ACL-ek adatbázisba mentését, majd azok üzembe állítását egy fájlba, amikor készen vannak.

Ennek a fejezet van pár ACL-példája, amelyek végig fogják vezetni az ACL meghatározások meghatározásának folyamatában, és rendelkezik az összes lehetséges fontos ACL-beállítások hivatkozásával.

Figyelem

Az alapértelmezett „root@localhost” felhasználót nem érintik a jegy ACL-ek

Meghatározás

Az ACL-meghatározások két nagy részre oszthatók: „Illesztés” és „Változtatás”. Az illesztési szakaszokban az ACL-ek olyan jellemzőket tartalmaznak, amelyeknek teljesülniük kell az ACL használatához. Ha az ACL-ben meghatározott jellemzők nem illeszkednek az elküldött jellemzőkkel, akkor az ACL-nek nem lesz semmilyen hatása, de bármely más illeszkedő ACL-nek lesz. A változtatás szakaszok szabályokat tartalmaznak egy jegy lehetséges lehetőségei csökkentéséhez.

Illesztési szakaszok

  • Tulajdonságok (Properties)

    Ez a szakasz olyan illesztési lehetőségeket tartalmaz, amelyek röptében megváltoztathatók. Például egy jegy létrehozásakor a jegy adatai dinamikusan megváltoznak, amint az ügyintéző beállítja az információkat. Ha be van állítva egy ACL egy jegyjellemző illesztéséhez, akkor az ACL csak akkor lesz aktív, amikor az illesztési jellemzőt kiválasztják, és csökkentheti az egyéb jegyjellemzőket, de amint egy másik érték lesz kiválasztva, az ACL-nek nem lesz semmilyen hatása.

  • Tulajdonságok adatbázis (PropertiesDatabase)

    Ez a szakasz hasonló a Tulajdonságokhoz, de nem fogad el a jegyjellemzőkben olyan változtatásokat, amelyek nincsenek elmentve az adatbázisba. Ez azt jelenti, hogy egy jellemző megváltoztatása elküldés nélkül nem fog semmilyen hatást okozni. Ez a szakasz nem használható a jegylétrehozás képernyőknél (mivel a jegyek még nincsenek létrehozva az adatbázisban).

Változtatási szakaszok

  • Lehetséges (Possible)

    A „Possible” szakasz visszaállítja a csökkentendő adatokat csak azokra az elemekre, amelyek ebben a szakaszban be vannak állítva.

  • Lehetséges hozzáadás (PossibleAdd)

    A „PossibleAdd” szakaszban lévő elemek azokat a hiányzó elemeket adják hozzá, amelyek csökkentve lettek más ACL-ekben. A „PossibleAdd” csak egyéb olyan ACL-ekkel együtt használható, amelyek rendelkeznek „Possible” vagy „PossibleNot” szakaszokkal.

  • Nem lehetséges (PossibleNot)

    Ez a szakasz adott elemek eltávolításához használható a jelenlegi adatokból. Használható önállóan vagy más „Possible” vagy „PossibleAdd” szakaszokkal rendelkező ACL-ekkel együtt.

Azért, hogy az ACL-ek fejlesztését könnyebbé és hatékonyabbá tegye, van egy úgynevezett módosítók halmaza a jellemzőkhöz minden egyes szakasznál. Ezek a módosítók az alábbiakban vannak ismertetve:

Módosítók

  • [Not]

    Ez a módosító egy érték tagadásához használható. Például: '[Not]2 low' ebben az esetben a jegyprioritásokról beszélve ugyanaz lesz, mintha a következő lenne: '1 very low', '3 normal', '4 high', '5 very high'.

  • [RegExp]

    Egy reguláris kifejezés megadásához használható több érték illesztéséhez. Például '[RegExp]low' a prioritásokról beszélve ugyanaz mint a következő: '1 very low', '2 low'

  • [regexp]

    Nagyon hasonló a [RegExp] módosítóhoz, de nem érzékeny a kis- és nagybetűkre.

  • [NotRegExp]

    Tagadott reguláris kifejezés, például '[NotRegExp]low' a prioritásokról beszélve ugyanaz mint a következő: '3 normal', '4 high', '5 very high'.

  • [Notregexp]

    Nagyon hasonló a [NotRegExp] módosítóhoz, de nem érzékeny a kis- és nagybetűkre.

Példák

A következő példák mind grafikus, mind szövegalapú módon láthatók.

5.1. példa - Egy ACL, amely csak azoknak a jegyeknek az áthelyezését teszi lehetővé egy várólistába, amelyek 5-ös jegyprioritással rendelkeznek.

Ez a példa egy ACL alapvető szerkezetét mutatja be. Először szüksége van egy névre. Ebben az esetben legyen ez „100-Pelda-ACL”. Vegye figyelembe, hogy az ACL-ek számszerűen rendezve lesznek a végrehajtás előtt, így körültekintéssel kell használnia a neveket.

Másodszor van egy „Tulajdonságok” („Properties”) szakasza, amely egy szűrő a jegyeihez. Az itt meghatározott összes feltétel alkalmazva lesz egy jegyen annak meghatározásához, hogy az ACL-t alkalmazni kell-e vagy sem. A mi példánkban egy jegy akkor fog illeszkedni, ha a „Nyers” várólistában van és „5 nagyon magas” prioritással rendelkezik. Ezt az űrlapon lévő változások is érinteni fogják (például ha a jegy a „Nyers” várólistában van és „3 normál” prioritással rendelkezik, akkor ebben a pillanatban az ACL nem fog illeszkedni, de ha ezután a prioritás lenyílót kiválasztják és a prioritást „5 nagyon magas” értékre változtatják, akkor is illeszkedni fog).

Végül a „Possible” szakasz módosításokat határoz meg a képernyőhöz. Ebben az esetben az elérhető várólisták közül csak a „Riasztás” várólistát lehet kiválasztani egy jegyképernyőn.

5.1. ábra - 100-Pelda-ACL ACL

100-Pelda-ACL ACL


# jegy ACL
$Self->{TicketAcl}->{'100-Pelda-ACL'} = {
    # illesztési tulajdonságok
    Properties => {
        # jelenlegi jegy illesztési tulajdonságai
        Ticket => {
            Queue => ['Nyers'],
            Priority => ['5 very high'],
        }
    },
    # lehetséges lehetőségek visszaadása (fehér lista)
    Possible => {
        # lehetséges jegylehetőségek (fehér lista)
        Ticket => {
            Queue => ['Riasztás'],
        },
    },
};
                


5.2. példa - Egy ACL, amely csak azoknak a jegyeknek az áthelyezését teszi lehetővé egy várólistába, amelyek 5-ös jegyprioritással rendelkeznek az adatbázisban tárolva.

Ez a példa nagyon hasonló a legutóbbihoz, de ebben az esetben csak azok a jegyek fognak illeszkedni, amelyek a „Nyers” várólistában vannak és „5 nagyon magas” prioritással rendelkeznek, mindkettőt adatbázisban tárolva. Az ilyen fajta ACL-ek nem bírálják el az űrlapon lévő változásokat, mielőtt a jegy valóban frissítve lenne az adatbázisban.

5.2. ábra - 102-Pelda-ACL ACL

102-Pelda-ACL ACL


# jegy ACL
$Self->{TicketAcl}->{'102-Pelda-ACL'} = {
    # illesztési tulajdonságok
    PropertiesDatabase => {
        # jelenlegi jegy illesztési tulajdonságai
        Ticket => {
            Queue => ['Nyers'],
            Priority => ['5 very high'],
        }
    },
    # lehetséges lehetőségek visszaadása (fehér lista)
    Possible => {
        # lehetséges jegylehetőségek (fehér lista)
        Ticket => {
            Queue => ['Riasztás'],
        },
    },
};
                


5.3. példa - Egy ACL, amely letiltja a nyers várólistában lévő jegyek lezárását, és elrejti a lezárás gombot.

Itt láthatja, hogy egy jegymező (állapot) hogyan szűrhető egynél több lehetséges értékből való választással. Lehetséges azon műveletek korlátozása is, amelyek egy bizonyos jegynél végrehajthatók. Ebben az esetben a jegyet nem lehet lezárni.

5.3. ábra - 102-Masodik-pelda-ACL ACL

102-Masodik-pelda-ACL ACL


$Self->{TicketAcl}->{'102-Masodik-pelda-ACL'} = {
    # illesztési tulajdonságok
    Properties => {
        # jelenlegi jegy illesztési tulajdonságai
        Ticket => {
            Queue => ['Nyers'],
        }
    },
    # lehetséges lehetőségek visszaadása (fehér lista)
    Possible => {
        # lehetséges jegylehetőségek (fehér lista)
        Ticket => {
            State => ['new', 'open', 'pending reminder'],
        },
    },
    # nem lehetséges lehetőségek visszaadása is (fekete lista)
    PossibleNot => {
        # nem lehetséges művelet-lehetőségek
        Action => [ 'AgentTicketClose' ],
    },
};
                


5.4. példa - Egy ACL, amely mindig eltávolítja a sikeresen lezárva állapotot.

Ez a példa azt mutatja be, hogy hogyan lehetséges negatív szűrőket meghatározni (a „closed successful” állapot lesz eltávolítva). Azt is láthatja, hogy ha nem határozunk meg illesztési tulajdonságokat egy jegyhez, akkor bármely jegyre illeszkedni fog, azaz az ACL mindig alkalmazva lesz. Ez akkor lehet hasznos, ha alapértelmezetten el szeretne rejteni bizonyos értékeket, és csak speciális körülményeknél szeretné engedélyezni azokat (például ha az ügyintéző egy adott csoportban van).

5.4. ábra - 103-Harmadik-ACL-pelda ACL

103-Harmadik-ACL-pelda ACL


$Self->{TicketAcl}->{'103-Harmadik-ACL-pelda'} = {
    # illesztési tulajdonságok
    Properties => {
        # jelenlegi jegy illesztési tulajdonságai (mindig illeszkedik)
    },
    # lehetséges lehetőségek visszaadása
    PossibleNot => {
        # lehetséges jegylehetőségek
        Ticket => {
            State => ['closed successful'],
        },
    },
};
                


5.5. példa - Egy ACL, amely csak hardver-szolgáltatásokat jelenít meg azoknál a jegyeknél, amelyeket olyan várólistákban hoztak létre, amelyek neve „HW” kezdetű.

Ez a példa azt is bemutatja, hogy hogyan használhat reguláris kifejezéseket a jegyek illesztéséhez és az elérhető lehetőségek szűréséhez.

5.5. ábra - 104-Csak-hardver-szolgaltatasok-a-HW-varolistaknal-ACL ACL

104-Csak-hardver-szolgaltatasok-a-HW-varolistaknal-ACL ACL


$Self->{TicketAcl}->{'104-Csak-hardver-szolgaltatasok-a-HW-varolistaknal-ACL'} = {
    # illesztési tulajdonságok
    # figyelje meg, hogy nincs "Ticket => {" ugyanis még nincsenek jegyek
    Properties => {
    Queue => {
        Name => ['[RegExp]HW'],
        }
    },
    # lehetséges lehetőségek visszaadása
    Possible => {
        # lehetséges jegylehetőségek
        Ticket => {
            Service => ['[RegExp]^(Hardver)'],
        },
    },
};
                


5.6. példa - Egy ACL, amely egy folyamatot korlátoz az ügyfél előtétprogramján az ügyfél-azonosító használatával.

5.6. ábra - 105-Folyamat-letiltasa-az-ugyfel-azonositonal ACL

105-Folyamat-letiltasa-az-ugyfel-azonositonal ACL


$Self->{TicketAcl}->{"105-Folyamat-letiltasa-az-ugyfel-azonositonal"} = {
    'Possible' => {},
    'PossibleNot' => {
        'Process' => [
            'F14'
        ]
    },
    'Properties' => {
        'CustomerUser' => {
            'UserCustomerID' => [
                'AzÜgyfélAzonosítója'
            ]
        }
    },
    'PropertiesDatabase' => {},
    'StopAfterMatch' => 0
};
                


Hivatkozás

A lenti példában megtalálható az összes paraméter listája, amely az ACL-eknél használható.

Nézze meg a folyamatkezelés dokumentációban az ACL-ekről szóló szakaszt a részletesebb információkért, hogy hogyan kell ACL-eket használni a folyamatjegyeknél.

5.7. példa - Az összes lehetséges fontos ACL-beállítást bemutató hivatkozás.

# jegy ACL
$Self->{TicketAcl}->{'200-ACL-hivatkozas'} = {
    # illesztési tulajdonságok (jelenlegi értékek az űrlapról)
    Properties => {

        # a használt előtétprogram modul
        Frontend => {
            Action => ['AgentTicketPhone', 'AgentTicketEmail'],
        },

        # a bejelentkezett ügyintéző
        User => {
            UserLogin => ['felhasználónevek'],
            Group_rw => [
                'forródrót',
            ],
            Role => [
                'admin',
            ],
            # ...
        },

        # a bejelentkezett ügyfél
        CustomerUser => {
            UserLogin => ['felhasználónevek'],
            UserCustomerID => ['ügyfél-azonosítók'],
            Group_rw => [
                'forródrót',
            ],
            # ...
        },

        # folyamat tulajdonságok
        Process => {
            ProcessEntityID        => ['Process-9c378d7cc59f0fce4cee7bb9995ee3eb'],         # az a folyamat, amelynek a jelenlegi jegy a része
            ActivityEntityID       => ['Activity-f8b2fdebe54eeb7b147a5f8e1da5e35c'],        # a jegy jelenlegi tevékenysége
            ActivityDialogEntityID => ['ActivityDialog-aff0ae05fe6803f38de8fff6cf33b7ce'],  # a jelenlegi tevékenység párbeszéd, amelyet az ügyintéző/ügyfél használ
        },

        # jegy tulajdonságok
        Queue => {
            Name     => ['Nyers'],
            QueueID  => ['azonosítók'],
            GroupID  => ['azonosítók'],
            Email    => ['e-mail címek'],
            RealName => ['OTRS rendszer'],
            # ...
        },
        Service => {
            ServiceID => ['azonosítók'],
            Name      => ['nevek'],
            ParentID  => ['azonosítók'],
            # ...
        },
        Type => {
            ID   => ['azonosítók'],
            Name => ['nevek'],
            # ...
        },
        Priority = {
            ID   => ['azonosítók'],
            Name => ['nevek'],
            # ...
        },
        SLA = {
            SLAID    => ['azonosítók'],
            Name     => ['nevek'],
            Calendar => ['naptárak'],
            # ...
        },
        State = {
            ID       => ['azonosítók'],
            Name     => ['nevek'],
            TypeName => ['állapottípusnév'],,
            TypeID   => ['állapottípus-azonosító'],
            # ...
        },
        Owner => {
            UserLogin => ['felhasználónevek'],
            Group_rw => [
                'csoportok',
            ],
            Role => [
                'admin',
            ],
            # ...
        },
        Responsible => {
            UserLogin => ['felhasználónevek'],
            Group_rw => [
                'csoportok',
            ],
            Role => [
                'admin',
            ],
            # ...
        },
        DynamicField => {
            # A neveknek DynamicField_<mezonev> formátumban kell lenniük.
            # A tömbben [ ... ] lévő értékeknek mindig a dinamikus mező
            #   meghatározásban megadott lefordítatlan belső adatkulcsoknak
            #   kell lenniük, és nem a felhasználónak megjelenített adatértékeknek.
            DynamicField_Mezo1             => ['valamilyen érték'],
            DynamicField_MasikMezo         => ['valamilyen érték'],
            DynamicField_JegySzabadSzoveg2 => ['valamilyen érték'],
            # ...
        },
        # vagylagosan a jegytulajdonságok megadhatók a jegykivonatban
        Ticket => {
            Queue                => ['Nyers'],
            State                => ['new', 'open'],
            Priority             => ['prioritások'],
            Lock                 => ['lock'],
            CustomerID           => ['azonosítók'],
            CustomerUserID       => ['azonosítók'],
            Owner                => ['tulajdonosok'],
            DynamicField_Mezo1   => ['valamilyen érték'],
            DynamicField_EnMezom => ['valamilyen érték'],
            # ...
        },
    },

    # illesztési tulajdonságok (létező értékek az adatbázisból)
    PropertiesDatabase => {
        # Lásd a „Properties” szakaszt, ugyanaz a beállítás használható itt is.
        # ...
    }

    # lehetséges lehetőségek visszaállítása (fehér lista)
    Possible => {
        # lehetséges jegylehetőségek (fehér lista)
        Ticket => {
            Queue                => ['Forródrót', 'Koordináció'],
            State                => ['állapotok'],
            Priority             => ['5 very high'],
            DynamicField_Mezo1   => ['valamilyen érték'],
            DynamicField_EnMezom => ['valamilyen érték'],
            # ...
            NewOwner             => ['valamilyen tulajdonos'],
            OldOwner             => ['valamilyen tulajdonos'],
            # ...
        },

        # A lehetséges tevékenység párbeszédek számának korlátozása,
        #   amelyeket az ügyintéző/ügyfél használhat egy folyamatjegyben.
        ActivityDialog => ['TP1', 'TP3'],

        # A lehetséges folyamatok számának korlátozása, amelyek indíthatók
        Process => ['Process-9c378d7cc59f0fce4cee7bb9995ee3eb', 'Process-12345678901234567890123456789012'],

        # lehetséges művelet lehetőségek (fehér lista)
        Action => [
            'AgentTicketBounce',
            'AgentTicketPhone'.      # csak a felosztás művelet megjelenítéséhez/elrejtéséhez használható
            'AgentLinkObject',       # csak az összekapcsolás művelet megjelenítéséhez/elrejtéséhez használható
            # ...
        ],
    },
    # lehetőségek hozzáadása (fehér lista)
    PossibleAdd => {
        # Lásd a „Possible” szakaszt
        # ...
    },
    # lehetőségek eltávolítása (fekete lista)
    PossibleNot => {
        # Lásd a „Possible” szakaszt
        # ...
    },
};
                


Megjegyzés

Ha az ACL-ek illesztése közben a „CustomerUserID” paraméter elküldésre kerül, akkor az ACL-mechanizmus össze fogja hasonlítani a meghatározott ACL-eket a megadott „CustomerUserID” érték használatával, hogy begyűjtse az ügyfél-felhasználó részleteit az ügyfél-felhasználó kivonat kitöltéséhez, és felülbírálja az ügyfél-információkat is a jegykivonatban a tulajdonságok illesztésénél. Másrészről ezek a számítások a „PropertiesDatabase” résznél is elvégzésre kerülnek, de a jegy ügyfelét használva alapként az adatok begyűjtéséhez.

Vegye figyelembe, hogy az ügyfélfelületen a „CustomerUserID” mindig elküldésre kerül a jelenleg bejelentkezett ügyfél-felhasználóval.

Tudatában kell lennie azzal, hogy a jegykeresés képernyőkön (AgentTicketSearch és CustomerTicketSearch) az ACL-ek által érintett jellemzők csak a dinamikus mezők. Ez azt jelenti, hogy ezeken a képernyőkön nem képes semmilyen más jellemzőt sem korlátozni, úgymint jegytípus, állapot, várólista, stb.

Az OTRS 4-től az „Action” paraméter többé nem kivonat, hanem egy hivatkozástömb, és bármely változtatási szakaszban használható bármely módosító használatával.