Modeling (10 points)
The "Roof Safety System Maintenance" process:
The safety system of the ACME Department roof needs to be verified periodically at fixed intervals (usually once per year). Furthermore it needs to be verified before each access to it (that can happen in case of a maintenance of any object on the roof that require access to the roof e.g broken tv receiver).
Paola, the owner of a building, needs to check the safety system (because of one of the previous reasons) and she uses an Information System to create the maintenance request. She logs-in with her username and password, selects her roof, a company from the company list that execute these maintenance tasks. Then she specifies the deadline for that task and submits the request.
The selected company named "Quick RooFix" after receiving the request needs to assign the maintenance task to an operator. Bob, the manager of the company selects the operator JohnnyFix which receives the notification through an email. Then he after logging into the system can accept or reject the request. In case he rejects the task, the manager needs to assign it to another operator.
When the maintainer accepts the task, if he does not complete the task during that period of time specified by Paola, a reminder will be sent to him and Paola alerting him that he has 3 days remaining. If he does not complete it in the next 3 days the task will be cancelled and a notification sent to the officer of the “Quick RooFix” company and Paola. Then the task assignment will be cancelled. Paola will have the possibility to reassign the task to another company or to quit the task.
When JohnnyFix decides to execute the task he will go on the roof and will use either his tablet or laptop to access building information. If he uses the tablet he will be able to use the RFID tag to enter immediately into the system. Otherwise he needs to login with username and password.
Once entered into the system, he will need to do a set of tasks that consists in verifying a set of roof characteristics. For each verification he will be able to mark it as acceptable or mark it as rejected. For each rejected characteristic, he will put a comment. After completing each verification he did, he will be able to put a general comment in which he summarizes all the activities. Once finished he submit the results to Paola and a copy of the summary to his officer Bob.
extension n.1 on the above process:
Assume that we need to do repair on the system. for the repair, paola contacts 3 companies from the same company list. these companies go and see the roof to provide an estimate for the repair cost and the time required for the repair. Companies need to respond within 10 days, otherwise they are not considered.
Once 10 days are elapsed, paola selects one company. if no company applied, paola selects 3 other companies, and so on.
in this extension model only the flow of paola’s company, not of the repair company.
extension n.2: as an alternative, model the case in which if all 3 replies come before the 10 days deadline, paola proceeds with the choice right away.
extension n.3: try to provide two different versions for the process of “extension 1” if you think it is possible (if not, say why): using boundary events and using timer events.
Second Part
Implementation (20 points)
1) You don't need to use the activiti-explorer, just complete the tasks from the Eclipse editor. Modify the configuration file according to the exercise needs.
2) Create a project called Exam1_YourID_Name_Surname (eg. Exam1_144244_John_Doe) and a diagram. Use pools and lanes.
3) The process should be as follows:
The process can start in 2 ways, either with a timer that triggers the starting of the process once per year (each April 1st), or when started by the user.
After the process starts a task called "Create task" is assigned to the "BuildingOwner". The building owner needs to complete the task providing these mandatory information:
email, string
deadline, string (in form of ISO 8601 standard)
Then a task “Make an offer” will be available for 1 day from the moment it has been created.
A message needs to be shown to the companies making offers to explain why the process has been started (eg. "Periodic maintenance" if started periodically or "Broken tv receiver" in the other case). Companies will be able to make offers specifying:
name, string
price, long
One company (having the same name) cannot create 2 offers. Forbid that.
Many companies should be able to make offers at the same time. The maximum number of companies that are available is 50. Once 25 of them have made offers we can considered the offerings completed and close the offering process.
Once the 1 day period has been expired, a task called "Assign to employee" is assigned to the winning company (the company that specified the lower price). The task will have the following fields:
operatorName: string
After the manager completes the task and assign it to an operator, a task "Accept Request" is assigned to the specified operator which needs to approve or reject the request (boolean value).
if the request is rejected, an email need to be sent to the manager at address manager@winner.com and he/she will be asked to select another operator.
if the operator approves the request a sub-process "maintenance" is started.
The sub-process will have a task "check the roof" assigned to the operator (without fields).
If the operator does not complete the maintenance task in the period that was specified by the owner, the system need to send up to 7 reminders to that person, each one after 1 day. When it is the time for the reminder nr 8, instead of sending it, the process need to raise an error. The error needs to be catched and process ended by printing an error message "request aborted".
The information about aborting need to be sent to both manager and the owner.
After the task (and sub-process) is completed, send an email to the building owner and manager saying request completed. Send the email at the same time.
Then end the process.
Good luck
Solution:
The modeling part can be addressed in several ways. Here you find a solution to the first part (nobody in the class arrived at the extension), but we gave maximum points to whoever did at least the first part correctly. In this simplistic solution we used only two pools and simplified the intra-pool communication. Alternatives that explicitly show message exchanges with the operator are also possible and reasonable.