Episode 470: "Anonymous Voting" on the Evaluation of the Team Leader!

Monday, February 15, 2016
Want an "anonymous voting" to evaluate the supervisor!

Indeed, if we could have opportunities of "supervisor evaluation" by the staff easily online, it would be convenient in its way. To conduct evaluation not only "Annually", but "on Each quarter" or "Monthly", it will allow good occasions for a supervisor to look back on the day-to-day operations him or herself. (Is this something like a "Cabinet approval rating"?)

However, a Workflow system is a tool to record "What, when or who of the input", in the first place. It is naturally considered poor compatibility with "anonymousness".

In this Workflow, "Supervisor evaluation (Anonymous voting)" has been defined.

Specifically, it is a mechanism that Task of [1. Enter Evaluation on Supervisor] will be allocated to My Tasks of all members when it will come to the scheduled date and time. Members will cast a vote to ballot, for example, [1] Confidence, [2] No confidence, [3] Neither of them.

The excellence in this Workflow is that the entered "Evaluation data" will be automatically appended to "External file", and the data itself will be deleted. That is, even a User who has the [Data viewing authorization] is not able to see "who casted a vote, and how?". In addition as the attentive, in this example it is well-equipped with a function to shuffle the contents of the "external file" upon each appending. In other words, the vote content is surely protected unless the communication log was wiretapped and analyze it.
("Whether voted or not?" and "Voted when?" are excluded from protection.)

Even though, it is not possible to conceal "Who voted how", in cases like "Total number of votes cast was one!" or "All the votes were casted to No confidence". (scary...)

[Supervisor Evaluation Ballot]

Needless to say, a member is not capable of casting "two or more votes".

In this business templates, it has been set that a Task of voting will be assigned at 9:00 am on March 31st, (every year!?!) automatically to cast the "precious one vote". (Also, note that it will become an invalid vote at 18:00.)

By the way, this scheme of "anonymous voting" will be able to be applied to various operations of personnel evaluation.

For example, it is fresh in our memory that upon Accounting fraud in Toshiba, "anonymous voting for Confidence / No-confidence of the President" was held (2015.11). I heard that the result of "Evaluation on the President" by 120 of senior management, had become a decision of nominating committee to appoint the director candidates.

I see, it might also be better yet to conduct an "evaluation of all executives" monthly... I guess that I will be able to obtain some knowledge and awareness on its own way, if its operation become more familiar within the organization, and "Approval rating" of each officer is measured continuously.

(Note) If a simultaneous vote has taken place, all of the voting results may not be reflected. (It will be overwritten by the contents of the latter vote)

[Supervisor Evaluation Ballot:"1. Enter Evaluation on Supervisor" screen]

▼Setting Sample for Script Step of "Check" (Sever-side Javascript)
//// Config 
var lockfile = "poll-lock-20160331.xml"; // lock file name 

//// == Retrieving == 
// M319 Options-XML:  
// Register an Options-XML file to which the Process Model Definitions Refer to 
// return "List<ItemView>"  
optionsList = itemDao.findAll( lockfile, true ); // OptionsXML (Public) 

//// == Calculating == 
var check = optionsList.get(0).getValue() + ""; 

//// == Updating == 
retVal.put("●", check ); 

▼Setting Sample for Script Step of "Appending to Vote-tallying" (Server-side Scripta)
//// Config 
var polldata = "poll-20160331.xml"; // counting file name 

//// == Retrieving == 
// M319 Options-XML:  
// Register an Options-XML file to which the Process Model Definitions Refer to 
// return "List<ItemView>"  
pollList = itemDao.findAll( polldata, true ); // OptionsXML (Public) 

var q1answer = data.get("●").get(0).getValue() + "";  
var q2answer = data.get("●").get(0).getValue() + "";  

//// == Calculating == 
var pollNum = pollList.size(); 
var array = new Array( pollNum + 1 ); 
for (i=0; i < pollNum; i++){ 
  array[i] = pollList.get(i).getDisplay() + ""; 
array[ pollNum ] = q1answer + "#" + q2answer; 

var tmp = "";  
var j = pollNum + 1;  
while ( j > 1 ) {  
  var k = Math.floor(Math.random() * j ); 
  // Math.random() returns num from 0 to 0.999 
  j = j - 1; 
  if (j == k) continue; 
  var tmp = array[j]; 
  array[j] = array[k]; 
  array[k] = tmp; 
} // shuffle (Fisher-Yates) 

var value_id_list = ""; 
var display_label_list = ""; 
for (i=0; i < pollNum + 1; i++){ 
  value_id_list += String(i + 1) + "\n"; 
  display_label_list += array[i] + "\n"; 

//// == Updating == 
retVal.put("●", value_id_list); 
retVal.put("●", display_label_list); 

[Data Items list]

[Free Download]
<Similar Models>
<<Related Articles>>

[Japanese Entry (ε’Œζ–‡θ¨˜δΊ‹)]