Zamykanie spraw podrzędnych
Zamykanie zadań podrzędnych gdy zamykane jest zadanie główne
Dział zatytułowany „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
Dział zatytułowany „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() }}