Best Script Language to Automate ISO


Now a RAD tool can automate you business procedures!

(because has features that usual programming languages lack entirely)

Are you ever wandered why business procedures (or processes) automation is so hard to support using a programming tool? The answer is very simple but not obvious. The programming languages that the programmers use (newer and older ones, object oriented or not) are inappropriate tools to "express" business procedures. By "business procedures" we mean "procedures that involve human activity and cooperation". At this point someone of us could say:

"Why they can not? The manual of every programming language writes: procedural programming language. So procedures must be the language's expertise!".

My answer is that the words are misleading. The correct is: "programming language for computational procedures"

....and we know that describing "algorithms" is not the same as describing "business procedures".So you can easily code the following, in any programming language:

"Please my computer calculate this and that and after that get this value. By using this values calculate the maximum of those numbers and then display the value to the user".

Now lets try to code the following:

"Please my computer could you run this car service procedure? So the job that has to be done is the following: Everyone of our employees can take calls from customers in order to arrange a service appointment. The customer gives a name and the car number and model. A date and time are provided from our employee. The customer arrives at the facility's gate at the specified date and time. The gate personnel gives him the permission to enter. The customer goes to Chief Mechanic. Here the Chief Mechanic defines who is going to disassemble the car's engine, what are the required parts and  who is the Reassembling Mechanic. After that the Disassembling Mechanic work's on the car while at the same time the personnel on the warehouse collect's the required parts. After both of the tasks are finished 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.  After the customer finishes his/her coffee and also the car is serviced the customer goes to office in order to pay and have a goodbye. That's all."

Folks there are no "keywords" or "words" or "phrases" or "commands" or whatever in the vocabulary and syntax of any of the usual programming languages that could permit us to "express" the above "car service procedure". So we try to "approach" the above problem solution using the capabilities of our, inappropriate, tools. This leads to very poor implementation or no implementation at all. So lets forget ISO automation!

If you wish to have a programming tool that could "expresses" the manager's words directly into "business procedure" then your wish has been come true!

The following piece of code automates the above business procedure:




  {(1)....any user can put a new service request}


   callwait bpm_assign_job ( "new service request" , __activation_user , "" , 0)


  {(2) date (app_date) the GATE SECURITY waits the customer to come for the appoinment}


   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 the same time, the warehouse prepares the materials,}

   {       the mechanic starts working, the cafeteria hosts the cutomer}


   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 disassebles the engine}


          callwait bpm_assign_job ( "disassemble" , disas_mechanic , "" , 0 , serv_id )




    {(6).... the assigned mechanic puts the parts and reassebles the engine}


      callwait bpm_assign_job ( "reassemble" , reass_mechanic , "" , 0 , serv_id )


   and_branch                                     {(7).... the cafeteria the customer takes a cofee}


      callwait bpm_assign_job ( "host customer" , "" , "HOSTESS" , 0 , serv_id )


   join_branches               {...the customer finished his/her coffee and the job has been done}


   {(8)....the customer goes to the office in order to pay}


   callwait bpm_assign_job ( "payment and goodbye" , "" , "OFFICE" , 0 , serv_id )





Those code lines above are the commands that were given to the "SERVICE_MANAGER". This is the code of the coordinator agent for the above "car service procedure". You can see that this code has some very interesting features like:


Stops and waits users to do jobs


Continues execution after the finishing of user jobs


Assigns jobs to users not only by name but also by role, according to the organorgam


Presents jobs to users not immediately but even after days


Splits process to different parallel paths and continues only if all branches are finished


...and more


This is AutoScript. The kosmos/BOS suite's scripting language. Well the script is not just like that (I cheated a little in order to easy the reader's understanding). In reality the code is a mixture of human processes and computational procedures. An even better mixture of  language capabilities for the programmer.


The following applications are build using the capabilities just described:







Also there are applications that focus on that special business processes that commonly called "ISO procedures":



If you are interested in more arguments about the inefficiencies of usual programming tools and the solution kosmos/BOS offers you can read also:


When everyone's tool is a hammer how you can explain that not all problems are nails?




Tell a story


Obviously before taking your ISO's procedures and start code the "coordinator agent" for every procedure you can code just one, the more interesting and needed.

If you have any question feel free to contact. Even you can send us the "description" of a procedure (like the quoted text in the car service procedure) and we will send you the small application with the appropriate coordinator agent. Note that in this case you must permit us to publish the small application.


Rafael J. Pavlides