How the process of a car service facility can be automated
Car Service Process Automation
This application is about a “car service facility.“ The application requires automating the “procedure“ of “service.“ That means the successive “steps“ of procedure are automatically forwarded from one employee to another without any “manager“ intervention. The manager can see what tasks (steps) the employees are assigned by the system at any time. He can also see what tasks are “scheduled“ for the following days. After a period, the manager has a complete report on each employee‘s assigned tasks, i.e., when they have started and finished the tasks.
The requirements put on the application from the supposed “car service facility“ owner are the following:
“Everyone of our employees can take calls from customers to arrange a service appointment. Then the customer gives a name and the car‘s number, and the model. After that, our employee provides a date and time for the appointment. Finally, at the appointment‘s date and time, the customer arrives at the facility‘s gate at the specified date and time. There the gate personnel permits him to enter. After that, the customer goes to Chief Mechanic. Here, the Chief Mechanic defines who will disassemble the car‘s engine, the required parts, and the Reassembling Mechanic. After that, the Disassembling Mechanic work‘s on the car while at the same time the personnel in the warehouse collect‘s the necessary parts. After both tasks, our employees finish, the Reassembling Mechanic starts to put the parts and reassemble. While the technical personnel takes care of the customer‘s car, he can have a coffee at the facility‘s cafeteria. Finally, after the customer finishes the coffee and our employees service the car, the customer goes to the office to pay and have a goodbye. That‘s all.“
For all of the above requirements, we place them on a coordinator agent. The action_code of the agent is the following:
start_action
{(1) any user can put a new service request}
callwait bpm_assign_job ( “new service request“ , __activation_user , ““ , 0)
{(2) at date (app_date) the GATE SECURITY waits for the customer to come for the appointment}
callwait bpm_assign_job ( “service appointment“ , ““ , “GATE SECURITY“ , app_date_num , serv_id )
{(3) the CHIEF MECHANIC makes the first estimation of labor and materials, assigns a mechanic}
callwait bpm_assign_job ( “service estimation“ , ““ , “CHIEF MECHANIC“ , 0 , serv_id )
{split activities at the same time, the warehouse prepares the materials,}
{ the mechanic starts working, the cafeteria hosts the customer}
split_in_branch {parallel split the technical department does the job while in}
split_in_branch {parallel split (4) the warehouse prepares the required parts while }
callwait bpm_assign_job ( “collect parts“ , ““ , “WAREHOUSE“ , 0 , serv_id )
and_branch {(5) the assigned mechanic disassembles the engine}
callwait bpm_assign_job ( “disassemble“ , disas_mechanic , ““ , 0 , serv_id )
join_branches
{(6) the assigned mechanic puts the parts and reassembles the engine}
callwait bpm_assign_job ( “reassemble“ , reass_mechanic , ““ , 0 , serv_id )
and_branch {(7) the cafeteria the customer takes a coffee}
callwait bpm_assign_job ( “host customer“ , ““ , “HOSTESS“ , 0 , serv_id )
join_branches {the customer finished the coffee and we finished the job}
{(8) the customer goes to the office to pay}
callwait bpm_assign_job ( “payment and goodbye“ , ““ , “OFFICE“ , 0 , serv_id )
end_action
We can see the callwait (or split_in_branch) keywords. Those keywords allow the agent to wait (until the user has finished a job) or parallel code execution. Those are capabilities that are not presented every day in a programming language (ok, script!). Notice that the callwait “calls“ the user‘s activity as it would be a “program‘s subroutine.“ Notice that we have the procedure flow defined by conditions into the code (who mechanic to assign). That is a case of ad hoc control flow (not known in advance to the programmer!)
We have to admit that the effect (coordination and historical data collection of the procedure) is far too significant for the lines of code that the application programmer writes. To be precise, the code is a little bigger (the agent contains the code that “describes“ the task (activities) assigned to employees).
We can view the agent (agent prototype precisely) from right-mouse Click on Application‘s Background->Developer->Resources->Agent Prototypes. For every “service“ requested, the system creates a new “alive“ agent that starts to execute his action_code.
Where do we define users and roles?
Another issue is that the jobs are assigned to users (employees) by name. But mainly by their roles in the company. The users and roles as we have defined them in the application are at Menu->System->Users/Positions.
How do we activate the agent?
A “new customer complaint“ can be activated from the “New Action“ button on the left of the application window. For the users to see the activities (jobs) assigned to them, exit the demo application, and log in as the user in question.
How can the user see the incoming jobs?
Every user has the incoming activities window defined as “Tasks“ in the Menu. Notice that the system sends the same activity to all users who have the same role in the company or organization. When the user “completes“ the activity required data, they “forward“ the completed activity to the next step. Then the activity disappears from the window.
To see activities assigned to him for today or are uncompleted from yesterday, they have to activate “Finished Tasks.“
How can the manager see the current jobs?
By activating Menu ->CPO Control Panel->Active Tasks, we see every activity (job) that is assigned at the time and is in the phase of completion, i.e., presented to users “incoming activities“ and they are working them.
How can we evaluate our employees?
When we activate Menu->System->Associates, we can see a button captioned “Has Done.“ We get all the activities that the user (employee) has finished and by which role by activating it. The time of starting and completing each activity is also available—this way, the actual effort that the user has given to the company can be estimated.
How can we improve the demo application?
The demo application comes with “Developer“ capabilities. That means we have the opportunity to change the database schema (Right Click->Developer->Resources->Database Manager->Edit Schema). We can also change the forms (Right Click over a form->Designing).