Zamykanie spraw podrzędnych

Ostatnia modyfikacja Marzec 29, 2019

Zamykanie zadań podrzędnych gdy zamykane jest zadanie główne

Gdy mamy sprawę oraz sprawy podrzędne np zadanie i podzadania, częstym pytaniem jest „Jak zamknąć sprawy podrzędne gdy zamykamy sprawę główną?”

Założenia dla przykładu

  • Istnieją dwa procesy np Projekty oraz Zadania.
  • Z poziomu sprawy w procesie Projekty tworzymy wiele spraw w procesie Zadania i sprawy te są powiązane ze sprawą w procesie Projekty
  • Z poziomu sprawy w procesie Projekty chcemy zamknąć wszystkie powiązane z nią sprawy w procesie Zadania

Rozwiązanie

W procesie Projekty tworzymy regułę ręczną o następującej treści

_cases = FindCase("Zadania","CaseConnectedToCaseId",[CaseId]) ;
foreachcase(_cases)
{
   
CloseCase()
}
/
tu wracamy do sprawy głównej i też ją zamykamy */
CloseCase()

Zamykanie zadania głównego gdy zostaje zamknięte ostatnie zadanie podrzędne

Podobnym zagadnieniem, ale widzianym od strony spraw podrzędnych jest zamknięcie sprawy głównej gdy zostanie zamknięta ostania sprawa podrzędna.

Założenia dla przykładu

  • Istnieją dwa procesy np Projekty oraz Zadania.
  • Z poziomu sprawy w procesie Projekty tworzymy wiele spraw w procesie Zadania i sprawy te są powiązane ze sprawą w procesie Projekty
  • Z poziomu sprawy w procesie Zadania zamykamy pojedyncze zadanie, ale chcemy zamknąć Projekt gdy zostaną zamknięte wszystkie zadania z nim związane

Rozwiązanie

W procesie Zadania tworzymy regułę ręczną o następującej treści

_sprawaGłówna = [CaseConnectedToCaseId];
_taSprawa = [CaseId];
_zamknąćSprawęGłówna = false;
forcase(_sprawaGłówna)
{
   _sprawyPowiązane = FindCase("Zadania","CaseConnectedToCaseId",[CaseId],"OPEN")
   if (_sprawyPowiązane == _taSprawa)
   {
      /* czyli jest tylko ta jedna, ostatnia sprawa do zamknięcia */
      _zamknąćSprawęGłówna = true;
   }
}
/* dla zachowania kolejności najpierw zamykamy tę sprawę podrzędną */
CloseCase()
/* i sprawę główną gdy była to ostatnia sprawa podrzędna do zamknięcia */
if (_zamknąćSprawęGłówna == true)
{
   forcase(_sprawaGłówna)
   {
      CloseCase()
   }
}