Zamykanie spraw podrzędnych
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()
}
}