Productivity declining due to mistakes
For those who make approvals, processing of "Sending back" is annoying.Instead of reading the contents of an application and giving approval on it without saying anything (It will take 3 minutes), he or she must write a "reason for sending back" which costs 10 more minutes. (You don't dare to reject without a word, do you?) And if that was for "Point out simple mistake or typo", and if that occurred five, ten times a day, it may make you depressed.
And of course, the time to get home will be delayed by 1 hour and 2 hours.
Mistake occurrence rate lowered by system improvement
Mistake in "Date", "Amount", or "Customer name".The applicants don't dare to make mistake on purpose. Basically, we would like to consider how to lower occurrence rate by "improving the Business Process Definition".
- Improve "notes" and "input check" on input screen
- Add "reviewing step" by colleagues to Workflow
[Base flow of Request type process-Script]
Numerization of mistakes and losses
"Does it help improving?"For Process owners, Process improvement is hard to recognize.
In this example, the "number of times of Sending-back" is automatically recorded, and additionally "the time which lost due to Sending-back" is automatically recorded. In other words, it is a mechanism to record unnecessary data in processing of the application as separate data Issue daringly.
As a result, for example, KPIs such as "number of occurrences of sent-back in the whole company" or "average loss time due to sent-back" can be easily checked (monitored) at any time. (Visualization of improvement activity)
Specific setting method
In this example, the following server side JavaScript is set in the property of the automatic process "loss calculation".[Setting example of Script Task "Loss calculation" (Server side JavaScript) ]
//// == Data Retrieving == var loopCount = data.get( "q_loopCount" ) - 0; // Java to JavaScript Number var lostTime = data.get( "q_lostTime" ) - 0; // Java to JavaScript Number var startTime = data.get("q_startTime"); var endTime = data.get("q_endTime"); // com.questetra.bpms.util.AddableTimestamp //// == Calculating == loopCount = loopCount + 1; var intervalMilliSec = endTime.getTime() - startTime.getTime(); var intervalHour = Math.ceil( intervalMilliSec / 10 / 3600 ) / 100; lostTime = lostTime + intervalHour; //// == Data Updating == retVal.put( "q_loopCount", java.math.BigDecimal( loopCount ) ); retVal.put( "q_lostTime", java.math.BigDecimal( lostTime ) );
That is, each time the application reaches the Script Task, the difference value between the two time data (B - A) is recorded as "cumulative loss time" (C).
- A. Time of rejection at [2. Approval]
- B. Time of input completion at[1x. Rework]
- C. Cumulative loss time (h)
If you want to set up a similar mechanism in various in-house Business Processes, it is troublesome to write server side JavaScript each time. It can be said that there is also a problem in maintainability.
In such a case, it is effective to register the "service process" on the workflow platform as a package. This eliminates the need to write server side JavaScript in each Business Process Definition.
Specifically, create and register "Addon-XML" as shown below.
P.S. Incidentally, "time to measure" depends on the operation, business, or on the company. For example, at [2. Approval], various other measurement methods such as taking the difference between "time when it first rejected" and "time when it was approved" can be considered. In that case, the placement location and number to be arranged of the automatic steps will differ.
[Example of packaging in Addon-XML]
<?xml version="1.0" encoding="UTF-8"?><service-task-definition> <label>Lost Time Calculator</label> <configs> <config name="conf_DataIdA" required="true" form-type="SELECT" select-data-type="DATETIME"> <label>A: Select DATETIME DATA for Start</label> <label locale="ja">A: 計測開始時刻が格納されている時刻型データを選択してください</label> </config> <config name="conf_DataIdB" required="true" form-type="SELECT" select-data-type="DATETIME"> <label>B: Select DATETIME DATA for End</label> <label locale="ja">B: 計測完了時刻が格納されている時刻型データを選択してください</label> </config> <config name="conf_DataIdC" required="true" form-type="SELECT" select-data-type="DECIMAL"> <label>C: Select NUMERIC DATA for Elapsed Time (h) (update)</label> <label locale="ja">C: 経過時間(h)が格納されている数値型データを選択してください(更新)</label> </config> <config name="conf_DataIdD" required="true" form-type="SELECT" select-data-type="DECIMAL"> <label>D: Select NUMERIC DATA for Arrival Count (update)</label> <label locale="ja">D: 到達回数が格納されている数値型データを選択してください(更新)</label> </config> </configs> <script><![CDATA[ // Lost Time Calculator (ver. 20170523) // (c) 2017, Questetra, Inc. (the MIT License) //// == Config Retrieving == var dataIdA = configs.get( "conf_DataIdA" ); var dataIdB = configs.get( "conf_DataIdB" ); var dataIdC = configs.get( "conf_DataIdC" ); var dataIdD = configs.get( "conf_DataIdD" ); //// == Data Retrieving == var loopCount = data.get( dataIdD ) - 0; // Java to JavaScript Number var lostTime = data.get( dataIdC ) - 0; // Java to JavaScript Number var startTime = data.get( dataIdA ); var endTime = data.get( dataIdB ); // com.questetra.bpms.util.AddableTimestamp //// == Calculating == loopCount = loopCount + 1; var intervalMilliSec = endTime.getTime() - startTime.getTime(); var intervalHour = Math.ceil( intervalMilliSec / 10 / 3600 ) / 100; lostTime = lostTime + intervalHour; //// == Data Updating == retVal.put( dataIdD, java.math.BigDecimal( loopCount ) ); retVal.put( dataIdC, java.math.BigDecimal( lostTime ) ); ]]></script> <icon> iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABv0lEQVRYR+1XPU7DMBj1l0xpJcQFUBkZYe2Cx9bJ0CP0COUElBPAEXqEDo1ToQ6uxA5HgBuwVJ3qD32ortxUKc5PE4HIEiV+iV/e+75nB1jqEEKMAeA+fb+Ka0R8kFKO7XfBP4GfFCDZyshv21nIgjiOD2w6RkgIcU3jUso3OodhiAZ/cgI0udb6CgDOEPF5Pp+/10qg2+126GtbrdbFYrF4aUKBMbVZGIajOI6faidAE1KOaK0nJH8lBBBxLzjydgQA7J4vVIR5JzyG/50EEHGZ9VUAcEtjLpgtLv9acCyITI+7YCohIIRQUkpuFKmNQK/XuwSAjud5SmvNEfHDTjlSwGCs2N3DlFJACDFkjA3J863fEynlxFbAYKx62cOUImBLbvtdmwWGQBRFfDabqVprgDzPakOqCRpzwRS2oPEkdAkZF0xhBVxCxgVTigDn/DwIAp4kybTf7w/W67VSSn3aXUAFqrX+jmY6PM9bUsFWsiMiAu12WyHiKwDcrFYrnkFgV7BUoJUR2G4sRoyxR8bYXXq3c3ILKGZ9359uNpuBOaejOP1HZdb+SizIasVaktAlZFwwhbug8SD68wS+AAh8Lj/CJSvYAAAAAElFTkSuQmCC </icon> </service-task-definition>
[Addon-XML Download]
[Base flow of Application type process:"2. Approval" screen]
[Data Items list]
[Free Download]
- Business Template: Base flow of Request type process-Script
- Episode 536: The Number of Times of Sending-Back is also Valuable Issue Data! (2017-05-22)
- Episode 515: Approval on Contract through Workflow! (Improved version) (2016-12-26)
- Episode 501: You Don't Know the Spending of Budget? (2016-09-20)
- Episode 519: What is Automation of Business Process (Part 2) (2017-01-23)
- M117 DATA SEARCH: Refine Search over All Job Data/ Saving Refining Condition
- M209 ALLOCATION: Nomination by Organization and by Role
- M227 AUTOMATED STEP: Auto Executing Data Binding, Arithmetic Operations
- M401 BUSINESS FLOW: Setting: Separate the Steps of Application from Reworking for the sake of Easy Monitoring
- M415 AUTOMATED STEP: Adding an Auto-Step to be Used for Business Process Definition
- M416 AUTOMATED STEP: Create your own Auto-Step for Business Process Definition
[Japanese Entry (和文記事)]