/
Obieg opracowania (workflow)

Obieg opracowania (workflow)

W tym podmodule definiuje się graf etapów procesu ze wskazaniem obsługiwanej klasy obiektów (pośrednio grupa użytkowników) oraz możliwych przejść w grafie.

W przykładowym rozwiązaniu stosowanym w Politechnice Warszawskiej przyjęto, że opracowanie odbywa się w dwóch etapach:

  • rozpoczęcie projektu

  • realizacja/zakończenie projektu

przy czym w obydwu etapach, zakres działań oraz uprawnienia jednostki centralnej (COP) znaczeni różnią się od tego, co może wykonywać kierownik projektu (poziom wydziału)

 

Z tego powodu wyróżniono cztery fazy obiegu opracowania:

  1. Rozpoczęcie projektu - przygotowanie rekordu projektu przez COP: COP_01

    1. klasa obiektów: Projekty zarządzane przez COP

    2. możliwe przejścia:

      • Faculty_01

      • Faculty_02

  2. Rozpoczęcie projektu - uzupełnianie opisu projektu przez wydział (kierownika) w fazie początkowej: Faculty_01

    1. klasa obiektów: Projekty zarządzane przez COP

    2. możliwe przejścia:

      • COP_01

  3. Realizacja/Zakończenie projektu - modyfikacja rekordu projektu przez COP: COP_02

    1. klasa obiektów: Projekty zarządzane przez COP

    2. możliwe przejścia:

      • Faculty_01

      • Faculty_02

  4. Realizacja/Zakończenie projektu - uzupełnianie opisu projektu przez wydział (kierownika) w fazie trwania/zakończenia projektu: Faculty_02

    1. klasa obiektów: Projekty zarządzane przez COP

    2. możliwe przejścia:

      • COP_02

 

Uprawnieni użytkownicy mogą we właściwym stanie opisu “przekazać” rekord do opracowania w innej fazie. wynikającej z potrzeb dalszego uzupełniania danych gromadzonych w opisie projektu.

 

Poniższe rysunki pokazują najważniejsze pola na formularzu definicji rekordu workflow.

 

Formularz definicji rekordu workflow zawiera miedzy innymi poniższe pola, które są najbardziej istotne dla definiowania procesu:

  • Nazwa systemowa

  • Nazwa w języku polskim

  • Nazwa w języku angielskim

  • Klasa obiektów

  • Następny etap

  • Adres e-mail odbiorców poczty przychodzącej

  • Adres e-mail odbiorców poczty przychodzącej (EL/skrypt)

  • Priorytet sortowania (znakowo)

  • Etap domyślny

 

Adres odbiorców poczty elektronicznej może być wyznaczany automatycznie na dwa sposoby:

  • poprzez podanie metody ustalania wykazu adresów

  • załączenie opracowanego skryptu

przy czym możliwe jest stosowanie kilku metod oraz skryptu jednocześnie.

 

Zasady wykorzystania dostępnych metod ustalania adresatów poczty opisane są w podrozdziale https://omega-psir.atlassian.net/wiki/spaces/OM/pages/5279580161.

 

Przykładowa metoda została użyta w definicji fazy FACULTY_01 i wygląda jak na poniższym rysunku

przy czym treść tej definicji jest następująca:

 

 

Skrypt określający adresatów poczty elektronicznej może zawierać następującą treść:

// build email address list of the record owner's unit chief function chiefEmail(aff, cdaoHelper, iulq) { var gemail=''; var ca=''; var csep=''; var semail=''; var culq=''; if (culq =='') { var lid = 'cop_HB'; switch (aff) { case 'DPK' : lid = 'cop_BK'; break; case 'DFS' : lid = 'cop_MLC'; break; case 'DPM' : lid = 'cop_AG'; break; } culq='login=\''+lid+'\''; } else culq = iulq; var lu = cdaoHelper.listQ(culq, 'user', "id;ascending"); if (lu.size() > 0) { for (var i1=0; i1<lu.size(); i1++) { if (lu[i1].author) { ca=lu[i1].author; if (gemail !='') csep=';'; if (ca.email) {semail=ca.email;if (gemail.toLowerCase().indexOf(semail.toLowerCase()) ==-1) gemail=gemail+csep+ca.email;} } } } return gemail; } var daoHelper = component('daoHelper'); var temail=''; var cemail=''; var csep=''; if (entity) { if (entity.owner) { var ouq='login=\''+entity.owner+'\' or jcr:contains(@alias,\''+entity.owner+'\')'; var ou = daoHelper.listQ(ouq, 'user', 'id;ascending'); if (ou.size() > 0) { if (ou[0].author) { var oa=ou[0].author; if (temail !='') csep=';'; if (oa.email) temail=temail+oa.email; if (oa.affiliation) { var affil = oa.affiliation; if (affil.accronymPL) { aff = affil.accronymPL; cemail=chiefEmail(aff, daoHelper, ''); if (cemail !='') { if (temail !='') csep=';'; temail=temail+csep+cemail; } } } } } } if (temail =='') { if (entity.administratorUnit) { if (entity.administratorUnit.accronymPL) { aff = entity.administratorUnit.accronymPL; cemail=chiefEmail(aff, daoHelper, ''); if (cemail !='') { if (temail !='') csep=';'; temail=temail+csep+cemail; } } } } if (temail =='') { var tulq='login=\'cop_BK\' or login=\'cop_MLC\' or login=\'cop_AG\' or login=\'cop_HB\''; cemail=chiefEmail(aff, daoHelper, tulq); if (cemail !='') { if (temail !='') csep=';'; temail=temail+csep+cemail; } } } temail;

 

Related content

Workflow
Workflow
More like this
Przypisanie użytkowników do grup użytkowników
Przypisanie użytkowników do grup użytkowników
More like this
Przypisanie rodzajów projektów do klasy obiektów
Przypisanie rodzajów projektów do klasy obiektów
Read with this
Klasy obiektów
Klasy obiektów
More like this
Webinaria
Webinaria
Read with this
Zarządzanie grupami użytkowników
Zarządzanie grupami użytkowników
More like this