Housing Agency Workflow
This is an exercise to build a Workflow Net
Description
Housing Agency
Registration
- potential tenants indicate their interests:
- certain criteria: price, size, location, etc
- the interests are entered into some database
Offer
- after the registration, the agency sends an offer when a suitable apartment is found
- customer decides to accept or decline the offer
- if he declines, the agency continues to look for another flat
- if the customer doesn’t respond in 2 weeks, it’s assumed he has declined the offer
- if the customer declines two offers in a row, the process ends automatically
Contract
- if the customer accepts the offer, he has to sign a contract
- after signing he has to send the signed copy
- and pay 1000 USD deposit
- once it’s done, the tenants receive the keys
Payments
- they pay of the monthly basis
- every two months the finance department checks the payment history
- if everything is alright - no further action is needed
- if not, then a warning is sent
- then the payment is checked 2 months later: if there are still problems, the eviction process starts
- and then the process ends
Annual inspection
- the flat is checked annually
- ok - no actions needed
- if problems (damages) - tenants have to solve them in 4 weeks
- second inspection: if the problems solved - no actions are needed
- if not, the damage must be paid by the tenants
- if payment is not received in 3 weeks, the eviction process starts
- and the process ends
Workflow Net Model
To model this in Petri Nets, PNEditor was used
Obtained model:
Bad sides of the model:
- lack of parallelism
- the model is too restrictive
YAWL Model
The main flow:
- there are 2 Cancellation Regions
- note that for “initiate eviction process” this activity is also included to the cancellation regions of itself (for the reasons described in Cancellation Regions)
Initiate Renting flow:
Check Payment flow
Annual Check flow:
In this model:
- the issue with the lack of parallelism was fixed
Re-discovering the Model
Using the $\alpha^+$ algorithm
Steps
- first of all, the transitions were renamed to letters
- to obtain the possible sequences we construct the following graph:
- then we execute Breadth-First Search restricting the traversal of each node to 2 visits
- and get a log with the following possible firing sequences: http://pastebin.com/kSyhR9uK
- then the $\alpha^+$ algorithm is applied to these sequences using EMiT
- and the following workflow net is rediscovered: