Skip to end of banner
Go to start of banner

Obieg opracowania (workflow)

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Current »

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 Metody automatycznego ustalania adresów poczty elektronicznej.

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;

  • No labels