In the previous article, "Episode 595: Alternate Method of Setting Expiration on Questionnaire", I have introduced "A method of setting a timer with Data setting formula".

In the article, I described a measure to enhance the visibility of the Workflow diagram by reducing the number of Steps, such as;

...In addition, "Service Task (Data assignment)" is capable of assigning a value to multiple Data Items at single Step. In case if multiple "Service Task (Data assignment)" are arranged consecutively, please consider consolidating them into one...

In the article, I described a measure to enhance the visibility of the Workflow diagram by reducing the number of Steps, such as;

...In addition, "Service Task (Data assignment)" is capable of assigning a value to multiple Data Items at single Step. In case if multiple "Service Task (Data assignment)" are arranged consecutively, please consider consolidating them into one...

As I might be asked by someone saying "So, how can I concretely do?", so let's try to rewrite the Workflow diagram of the past together actually.

[Billing-Payment Confirmation flow 1]


[Billing-Payment Confirmation flow 1 (Integrated Steps)]


In the previous article, "Set Expiration to Post-Event Questionnaire", I have set "expiration to after 7 days" utilizing a Service Task. By setting a deadline for the questionnaire, it is possible to prevent the business process from staying stuck, even if it is not yet answered.

[Event_Acceptance-Questionnaire (Expiration)]

For the setting of "after 7 days, "data setting formula is used.
By writing "# now.addDays (7)", you can set "after 7 days" to "Expirtion (Date)" from the time (#now) when the token arrived in the "Expiration set" Step.

<"Expiration set" setting screen>


Other than that, in addition to the data setting formula expressing the date and time, there are;
  1. 2 hours 30 minutes later: #now.addHours(2).addMinutes(30),
  2. the end of the month: #now.getLastTimeInMonth(),
  3. 5th of the following month: #today.getFirstTimeInMonth().addDays(4), and so on.
("Data setting formula" can also be used in other data items. For details, refer to "M227: Set to combine business data and arithmetic operations automatically")


In the previous article, we added a mechanism for conducting a post-event questionnaire, to a Workflow for accepting participation in events such as "small group seminars". Impressions and feedback about an event from participants obtained by answering a questionnaire, they are hints to change the next event to a better one.

However, with the Workflow in the previous article, you had to "wait until the questionnaire was answered". If all the participants answered the questionnaire immediately, your work would proceed smoothly. But unfortunately, it wouldn't go that way easier. Sometimes you wouldn't answer a questionnaire. (Neither do I...)

Thus, I am going to improve the Workflow by setting the expiration. If there is no answer even it comes to the expiration, the Issue is to be automatically terminated.

[Event_Acceptance-Questionnaire (Expiration)]


In the previous article, I introduced a Workflow for event participation reception of such as "Seminar by a small group".
It is desirable to be rid of correspondence in emails by a person in charge and to make the mechanism of reception into Workflow, also in the aspect of A: Data Management, and B: Flow Improvement.

After the event has been successfully held, you would like to hear from the participants for their impressions and feedback on the event. By listening to the participant's voices and reflecting them on the next event, "Event holding work" itself can also be improved. In case the event is a seminar, it will also lead to reviewing of the contents of the seminar.

Although there is a method that to prepare a Workflow for collecting "Post-event Questionnaire" and to transmit the answering URL (Form Start) to the event participants collectively, I will introduce a method that to standby for entries to the questionnaire (Form Standby) in the post-step of "Event acceptance flow", this time.

[Event Acceptance flow-Questionnaire]



How do you handle acceptance of participation for events and seminars?

When you assume 100, 500, 1000 applicants, you will try very hard to build an 'Automatic Processing System'.
On the other hand, however, suppose if it is the scale of 10, 20, 50 people?

An event acceptance for a "small seminar", for example...

The quickest way is to set an Email address for accepting, and let the accepting work to be "correspondence in emails by the person in charge". That has a good aspect as well. Whatever it is for, it is very important to take action quickly.

However, if it is supposed to become "an event that will be repeatedly held", you may better get out from the manner of "correspondence in emails by the person in charge" at some occasion. That is, eliminate the situation that "only the person in charge knows" about the operations, and make it (semi-automatically as much as possible) exactly to be [recorded].

  • A. Data management
  • B. Flow improvement

Once you have made it into Workflow on the basis of the two perspectives, [taking over on replacement] of the person in charge of the acceptance becomes easier. A collaborative response will be able to be realized quickly even when [reinforcement of receptionist personnel]. And even though if it is an event of "once a year", you will not fall into the situation that 'Do you remember how we did it last year?'.

[Event Acceptance flow]



For a business system that is used every day, it is very important for users whether the input interface (input screen) is easy to understand and whether it is easy to use.

Relating a Workflow system, I often hear people saying such as;

  •  "I don't know what to input."
  • "It could be easier if there were examples or templates."
  • "I entered all the way, but it ended up as an error."
  • "The way of input varies depending on individuals."

And when I look back at our day-to-day operations, such as "Report of hours worked", "Request for approval", "Report of order receipt", "Answer to inquiries", etc., many of the occurrences of delays and reworks are mostly caused by erroneous or inappropriate input at upstream Steps.

"Improvement of work" tends to be a grandiose story such as standardization of business flow and optimal placement of resources, but as the content to be tackled becomes bigger, it takes time to get the effect. On the other hand, it can be said that "devising the input screen to reduce inputs that is erroneous and inappropriate" is a small "business improvement" that can be addressed immediately in daily work. Iterating small improvements will lead to major achievements.

In this workflow sample, I would like to introduce you the devising of "input example button" on an input screen, which allows input by clicking on it.


[Test flow for Input form]



[Test flow for Input form: "1. Input Test" screen]



When designing the input screen, it is basically necessary to set a "Data Item name" that is easy to understand, and to describe sentences and examples (Input hint) that explain how to input. Furthermore, by making it possible to select by option instead of typing, or by setting the initial value of data, the burden of inputting for a user is reduced and it also leads to suppression of variations in input data.

In addition to these means, it is also a good idea to consider using scripts such as arranging buttons for input assistance or performing input checking or setting data to other Data Items.

Even though you can set arbitrary HTML/JavaScript in [Input hint] of Questetra, in some cases it may be a trouble such as "it will destroy the layout of the whole input form". It must be set by staff members who have knowledge and experiences of HTML/JavaScript at their own risk within the range of their capability of maintenance.

▼[Input Hint] Setting Example (HTML/JavaScript):"Service Item"
E.g.: <button type="button" id="btnConsultant_1">Monthly advisory fee</button>、
<button type="button" id="btnInstruct_1">Workshop instructor fee (Diem)</button>、
<button type="button" id="btnDoc_1">Documentation fee</button>

<script type="text/javascript">
jQuery('#btnConsultant_1').on('click',function(){
jQuery('input[name="data\\[1\\].input"]').val( "Monthly advisory fee" );
});
jQuery('#btnInstruct_1').on('click',function(){
jQuery('input[name="data\\[1\\].input"]').val( "Workshop instructor fee (Diem)" );
});
jQuery('#btnDoc_1').on('click',function(){
jQuery('input[name="data\\[1\\].input"]').val( "Documentation fee" );
});
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Quotation price"
E.g.: <button type="button" id="btnS_2">(15 years career) 820,000</button>、
<button type="button" id="btnA_2">(5 years career) 452,000</button>、
<button type="button" id="btnB_2">(Less than 15 years) 339,000</button>

<script type="text/javascript">
jQuery('#btnS_2').on('click',function(){
jQuery('input[name="data\\[2\\].input"]').val( "820000" );
});
jQuery('#btnA_2').on('click',function(){
jQuery('input[name="data\\[2\\].input"]').val( "452000" );
});
jQuery('#btnB_2').on('click',function(){
jQuery('input[name="data\\[2\\].input"]').val( "339000" );
});
jQuery('input[name="data\\[2\\].input"]').parent().parent().css("background-color","#FFC0CB");
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Reason for Leave"
E.g.: <button type="button" id="btn1_5">Leisure and Home matter: Private</button>、
<button type="button" id="btn2_5">Local volunteer: Private (Local volunteer)</button>、
<button type="button" id="btn3_5">Got abdominal pain in the morning: Illness (abdominal pain)</button>、
<button type="button" id="btn4_5">Child's fever: Child care</button>

<script type="text/javascript">
jQuery('#btn1_5').on('click',function(){
jQuery('input[name="data\\[5\\].input"]').val( "Private" );
});
jQuery('#btn2_5').on('click',function(){
jQuery('input[name="data\\[5\\].input"]').val( "Private (Local volunteer)" );
});
jQuery('#btn3_5').on('click',function(){
jQuery('input[name="data\\[5\\].input"]').val( "Illness (abdominal pain)" );
});
jQuery('#btn4_5').on('click',function(){
jQuery('input[name="data\\[5\\].input"]').val( "Child care" );
});
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Approval request overview" "Budget classification"
Frequent: <button type="button" id="btnExhibit_78">(Exhibitions within budget)</button>、
<button type="button" id="btnProcurement_78">(Unexpected procurement)</button>

<script type="text/javascript">
jQuery('#btnExhibit_78').on('click',function(){
jQuery('input[name="data\\[7\\].input"]').val( "Outsourcing related to the Cloud Expo" );
jQuery('input[name="data\\[8\\].selects"][value="1"]').prop('checked', true);
});
jQuery('#btnProcurement_78').on('click',function(){
jQuery('input[name="data\\[7\\].input"]').val( "Purchase of personal computers due to breakdown" );
jQuery('input[name="data\\[8\\].selects"][value="3"]').prop('checked', true);
});
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Reason of request"
<span style='color:#ff0000;'>* Brief in Bullet</span><br>
E.g.: <button type="button" id="btnReasonA_9">(P.C. breakdown)</button>、
<button type="button" id="btnReasonB_9">(Abrupt procurement due to the increase of personnel)</button>、
<script type="text/javascript">
jQuery('#btnReasonA_9').on('click',function(){
var myReason = "";
myReason += "External Monitor output is corrupted by the dropping in transportation (Dec. 2015)\n";
myReason += "Hindrance to the operation of the latest OS, past more than three years since the purchase of January 2013.\n";
myReason += "Choose a familiar conventional series machine, even though D Company is not the lowest price, but the difference is small.";
jQuery('textarea[name="data\\[9\\].input"]').val( myReason );
});

jQuery('#btnReasonB_9').on('click',function(){
var myReason = "";
myReason += "Increase 30 part-timers to correspond due to receiving order of more than assumed.\n";
myReason += "20 spare PC. Need 10 more.\n";
myReason += "(D company is the cheapest and fastest.)";
jQuery('textarea[name="data\\[9\\].input"]').val( myReason );
});
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Service start"
<button type="button" id="btnThisMon_11">This month</button>、
<button type="button" id="btnNextMon_11">Next month</button>

<script type="text/javascript">
jQuery('#btnThisMon_11').on('click',function(){
var myToday = new Date();
var y = myToday.getFullYear();
var m = myToday.getMonth() + 1; // Jan: 0
if (m < 10) { m = '0' + m; }
jQuery('input[name="data\\[11\\].input"]').val( y + "-" + m );
});
jQuery('#btnNextMon_11').on('click',function(){
var myToday2 = new Date();
myToday2.setDate(1);
myToday2.setMonth(myToday2.getMonth() + 1);
var y2 = myToday2.getFullYear();
var m2 = myToday2.getMonth() + 1; // Jan: 0
if (m2 < 10) { m2 = '0' + m2; }
jQuery('input[name="data\\[11\\].input"]').val( y2 + "-" + m2 );
});
</script>
▼[Input Hint] Setting Example (HTML/JavaScript):"Service end"
<button type="button" id="btnOneYear_12">→1 year cintract</button>、
<button type="button" id="btnTwoYear_12">→2 years contract</button>

<script type="text/javascript">
jQuery('#btnOneYear_12').on('click',function(){
var myDateStr = jQuery('input[name="data\\[11\\].input"]').val();
var myStartMon = new Date( myDateStr + "-01");
var myEndMon = new Date();
myEndMon.setMonth( myStartMon.getMonth() + 11 );
var y = myEndMon.getFullYear();
var m = myEndMon.getMonth() + 1; // Jan: 0
if (m < 10) { m = '0' + m; }
jQuery('input[name="data\\[12\\].input"]').val( y + "-" + m );
});
jQuery('#btnTwoYear_12').on('click',function(){
var myDateStr = jQuery('input[name="data\\[11\\].input"]').val();
var myStartMon = new Date( myDateStr + "-01");
var myEndMon = new Date();
myEndMon.setMonth( myStartMon.getMonth() + 23 );
var y = myEndMon.getFullYear();
var m = myEndMon.getMonth() + 1; // Jan: 0
if (m < 10) { m = '0' + m; }
jQuery('input[name="data\\[12\\].input"]').val( y + "-" + m );
});
</script>
[Data Item list]

Similar Models

Related Articles


Free download Business Template : Test flow for Input form

(Japanese Entry (ε’Œζ–‡θ¨˜δΊ‹))
Concerning "Designation in Uneven Hierarchy", we learned methods for "Absolute designation according to the job title, "Relative designation according to organization hierarchy, and "Methods of separating business processes, designating approver".

As the last of this series, I will introduce a past article that describes "Method of separating the starting position according to job position".

Even though it is a similar idea to "Method of separating business processes", it addresses by separating the start position in one business process in this article. Although it is a "method of starting by boss" instead of "method of designating boss", please keep it in your memory as one of the methods of designing a Workflow App for an organization with variations in its hierarchy.