Ana içeriğe geç

4.6. İş Listesi#

BPMN süreçlerinde bulunan kullanıcı görevlerinin opsiyonel Keysis entegrasyonu seçeneği ile kullanıcı ya da kullanıcı grup sorumluluğu üzerinden yönetilmesini, listelenmesini ve çeşitli işlemler yapılmasını sağlayan yapıdır. Backend servis uçları ve frontend library'si (bpmn-lib) bu yapıya hizmet eder.

Yetenekleri#

  • Keysis entegrasyonu ile; kullanıcının sorumlu olduğu işlerin ve kullanıcının rol, rol grup ve profil grup bilgilerine göre üzerine alabileceği işlerin listelenmesi sağlanmıştır.
  • Kullanıcıların iş listesini filtreleyebilmesi ve raporlayabilmesi sağlanmıştır.
  • Kullanıcıların, yetkilendirmelerine göre iş sorumluluğunu üzerine alıp bırakabilmesi sağlanmıştır.
  • Onaylanabilir görev seçeneği sağlayarak, görevlerin onay ve red işlemlerinin yönetilmesini sağlar.
  • İş ile ilgili url bağlantısına, iş listesi üzerinden erişilebilmesi sağlanmıştır.
  • Kullanıcıların iş geçmişinin listelenmesi sağlanmıştır.

Konfigürasyon#

Esnek bir işler tablosu component'ı sunan bpmn-lib library'si, önyüz projesinde kullanılmak istenen modüle aşağıdaki gibi, modül importu ve dil dosyası tanımı ile eklenmelidir (Library Kullanımı).

export function KovanModuleHttpLoaderFactory(http: HttpClient, buildInfoService: HvlBuildInfoService) {
    return new HvlMultiTranslateHttpLoader(
        http,
        [
            ...
            { prefix: './assets/i18n/user-tasks/', suffix: '.json' },
        ],
        buildInfoService,
    );
}

@NgModule({
    imports: [
        ...,
        BpmnModule,
    ],
})
Bpmn library'sinin dil dosyaları, angular.json'a tanımlanır. Aşağıda, örnek bir "kovan" UI uygulamasının angular.json'ında dil dosyalarının tanımlandığı yer gösterilmiştir.

"kovan": {
    ...
    "architect": {
        "build": {
            ...
            "options": {
                ...
                "assets": [
                    ...
                    {
                        "glob": "**/*",
                        "input": "projects/bpmn-lib/src/assets",
                        "output": "/assets/"
                    },
                    ...
                ],
                ...
            },
            ...
        },
        ...
    }
},

İş listesi ile ilgili değişkenler aşağıdaki gibi config.json dosyasına tanımlanır.

userTaskService: Kullanıcı işleri işlemlerinin hangi servis ucundan yapılacağı bilgisi tanımlanır. Default olarak BPMN Engine rest servisi tanımlıdır.

userTaskListServicePattern: İş listesini sağlayan servis ucunun url mapping'i tanımlanır. Default olarak BPMN Engine rest servisinin "/task/active-user/page" servis ucu tanımlıdır. Default servis ucunun başarılı çalışması için Keysis aktif olmalıdır.

userTaskOperationsServicePattern: İş alma ve bırakma işlemlerini sağlayan servis ucunun url mapping'i tanımlanır. Default olarak BPMN Engine rest servisinin "/task" servis ucu tanımlıdır. Default servis ucunun başarılı çalışması için Keysis aktif olmalıdır.

userTaskMediumPriorityRangeStart: Bir işin orta seviye olarak önceliklendirilmesi için tanımlanan mininum priority değeridir. Default değeri 50'dir. 50'den küçük değeri olan işler düşük öncelikli olarak gösterilir.

userTaskMediumPriorityRangeEnd: Bir işin orta seviye olarak önceliklendirilmesi için tanımlanan maximum priority değeridir. Default değeri 79'dur. 79'dan büyük değeri olan işler yüksek öncelikli olarak gösterilir.

userTaskTableColumns: İşler listesinin hangi kolonlarının gösterileceğinin tutulduğu değişkendir. Default değerinde (["id","name","description","assignee","category","createTime","claimTime","dueDate","priority","operations"]) tüm kolonlar gösterilir.

Bu konfigürasyonların ardından, iş listesi component'ı aşağıdaki gibi istenen html dosyasında kullanılabilir.

<hvl-user-tasks [activeUserListMode]="true"> </hvl-user-tasks>

İş Sorumluluğu#

Kullanıcıya iş atarken iki yaklaşımdan biri kullanılabilir, İlki; direk olarakt kullanıcıya kullanıcı adı ile iş düşürmek, diğeri ise kullanıcı grubu adayı belirlemektir. Belirlenen aday grubuna dahil kullanıcılar, bu işleri görebilir ve işi kendi üzerine alabilir.

İlk yaklaşımda; süreç çiziminde kullanıcı görevi öğesinin atama bölümünde "Atanan" alanına verilen keyword, süreç başlatırken süreç değişkeni key'i olarak verilir. Bu key'in değeri ise kullanıcı adı olmalıdır. Bu şekilde kullanıcı adı ile kişiye iş atama işlemi yapılmış olur.

İkinci yaklaşımda ise; süreç çizimininde kullanıcı görevi öğesinin atama bölümüne "Aday Gruplar" alanına verilen keyword, süreç başlatırken süreç değişkeni key'i olarak verilir. Bu key'in değeri ise kullanıcı grubu olmalıdır. Default keysis entegrasyonu üzerinden örnek verirsek;

  • İşin adayları rol üzerinden belirlenecekse; "r:" prefixi + rol kodu formatında olmalıdır (Örnek; "r:bpmnDesignerRole").
  • İşin adayları rol grubu üzerinden belirlenecekse; "rg:" prefixi + rol grubu uuid'si formatında olmalıdır (Örnek; "rg:ROLE_GROUP_UUID_00000000000000000001").
  • İşin adayları profil grubu üzerinden belirlenecekse; "pg:" prefixi + profil grubu uuid'si formatında olmalıdır (Örnek; "pg:PROFILE_GROUP_UUID_00000000000000001").
  • İşin adayları profil entegrasyon kodu üzerinden belirlenecekse; "pin:" prefixi + profil entegrasyon kodu formatında olmalıdır (Örnek; "pin:PROFILE_INT_2").

İş Alma & Bırakma#

Kullanıcının üzerindeki işi bırakılması için, Keysis ile yetkilendirme kontrolü yapılır ve her kullanıcının sadece kendi üzerindeki işleri bırakabilmesi sağlanır.

Kullanıcının bir işi alabilmesi için ise; işin sorumluluğunun; kullanıcının bağlı olduğu role, rol grubuna, profil grubuna ve profil entegrasyon koduna sahip olması gerekmektedir.

İş Onayı & Reddi#

@HvlEnableBpmnApprovableOnTaskCreatedEventListener anotasyonu; konfigürasyona eklenir.

Eğer bir kullanıcı görevi, iş akışı gereği onay ve red gerektiren bir işlemse; süreç tanımında onay gerektiren kullanıcı görevinin id tanımına, alttaki ekranda görüldüğü gibi "_approvable" suffix'i eklenmelidir.

Süreç tanımı bu şekilde tanımlandıktan sonra; akışta sürecin bu aşamasına gelindiğinde, alttaki ekran görüntüsünde görüldüğü gibi, sorumlu kullanıcının onay ya da red işlemi yapabileceği seçenekler açılacaktır. Bu şekilde onay ya da red gerektiren işlemler ayırt edilebilecektir.

Onay ya da red işlemi yapıldıktan sonra; kullanıcı görev id'sine "_result" suffix'i eklenerek, onay sonucu; süreç değişkeni olarak süreç içinde taşınır.

İş Detayı#

Kullanıcı görevinin "formKey" alanı alttaki ekranda görüldüğü gibi doldurularak; iş bağlantısı verilir.

Süreç tanımı bu şekilde tanımlandıktan sonra; akışta sürecin bu aşamasına gelindiğinde, alttaki ekran görüntüsünde görüldüğü gibi, sorumlu kullanıcının görebileceği bağlantı butonu açılacaktır.