podwykonawca.use

download

model podwykonawca

/*

$Id: podwykonawca.use,v 1.1 2006/04/26 22:33:04 darek Exp $

 Aktualnie procesy widzi tylko realizcujacy i dziala w zastepstwie
 podwykonawcy

*/

class Zapotrzebowanie
end

class Zamowienie
end

class Pracownik
end

class Proces
attributes
    dataRozpoczeciaPracy: String
    dataRealizacji: String
operations
    rozpocznijProces(pracownik: Pracownik)
    -- zabezpieczenie: moze rozpoczyna tylko realizujacy badz
    -- podwykonawca
    post: dataRozpoczeciaPracy <> oclUndefined(String)
        and pracownikRealizujacy <> pracownik
        and pracownikPodwykonawca <> pracownik
        implies dataRozpoczeciaPracy
        = oclUndefined(String)
    post: dataRozpoczeciaPracy <> oclUndefined(String)
        and (pracownikRealizujacy = pracownik
        or pracownikPodwykonawca = pracownik)
        implies dataRozpoczeciaPracy
        <> oclUndefined(String)

    realizujProces(pracownik: Pracownik)
    -- zabezpieczenie: moze rozpoczyna tylko realizujacy badz
    -- podwykonawca
    post: dataRealizacji <> oclUndefined(String)
        and pracownikRealizujacy <> pracownik
        and pracownikPodwykonawca <> pracownik
        implies dataRealizacji
        = oclUndefined(String)
    post: dataRealizacji <> oclUndefined(String)
        and (pracownikRealizujacy = pracownik
        or pracownikPodwykonawca = pracownik)
        implies dataRealizacji
        <> oclUndefined(String)
end

class Environment
attributes
    loggedUserName: String
end

association PracownikRealizujacy
between
    Proces[*] role procesyJakoRealizujacy
    Pracownik[1] role pracownikRealizujacy
end

association PracownikPodwykonawca
between
    Proces[*] role procesyJakoPodwykonawca
    Pracownik[1] role pracownikPodwykonawca
end

association ProcesyDlaZapotrzebowania
between
    Proces[*] role procesy
    Zapotrzebowanie[1] role zapotrzebowanie
end

association Zapotrzebowania
between
    Zamowienie[1] role zamowienie
    Zapotrzebowanie[*] role zapotrzebowania
end

association WidoczneProcesy
between
    Proces[*] role widoczneProcesy
    frmProcesyDlaPracownika[*] role frmProcesyDlaPracownika
end

-- widocznosc procesow dla realizujacego i podwykonawcy
-- aktualnie jest tylko realizujacy
class ProcesyDlaPracownika
attributes
    pracownik: Pracownik
operations
    procesyCzekajace(): Sequence(Proces)
    procesyObslugiwane(): Sequence(Proces)
    procesyZrealizowane(): Sequence(Proces)
end

class frmProcesyDlaPracownika
attributes
    env: Environment
operations
    pokaz()
end


(...) Nie ma bowiem łatwych odpowiedzi. Nie istnieje nic takiego jak najlepsze rozwiązanie - zarówno jeśli chodzi o narzędzia, jak i języki czy systemy operacyjne. Są jedynie systemy, które mogą być bardziej odpowiednie w konkretnych okolicznościach.

I tu właśnie do gry wchodzi pragmatyzm. Nie należy przywiązywać się do żadnej określonej metody, ale mieć na tyle rozległą wiedzę i doświadczenie, by w danej sytuacji wybrać dobre rozwiązanie. (...)

Andrew Hunt, David Thomas "Pragmatyczny Programista"