第470話:チームリーダーの評価を「無記名投票」で!

2016年2月15日
上司を評価する「無記名投票」をしたい!

なるほど、オンラインで、簡単に「上司評価」の機会が持てるなら、ソレはソレで便利そうだ。「年次」とは言わず、「四半期おき」や「月次」などで実施すれば、上司自身が日常業務を振り返るための良い機会になる、、、ような気がする? (「内閣支持率」の調査みたいなものか?)。

しかし、ワークフローシステムとは、そもそも「いつ誰がどんな入力をしたか」を記録する道具だ。普通に考えれば「無記名」とは相性が悪い。


このワークフローは、チームメンバーによる「上司評価フロー(無記名投票)」が定義されている。

具体的には、スケジュールされた日時になると[1.上司評価を記入する]というマイタスクが、メンバー全員に割り当てられる仕組みだ。メンバーは、(手を震わせながら?)、たとえば、[1]信任する、[2]どちらでもない、[3]信任しない、を選んで申請する。

秀逸なのは、入力した「上司評価データ」が自動的に「外部ファイル」に追記され、そして申請データとしては自動的に消去される点だ。つまり[データ閲覧権限]があるユーザでも「誰がどのような投票をしたのか」は確認できない。さらにご丁寧なことに、この例では「外部ファイル」の中身を追記都度にシャッフルする機能まで整っている。つまり、通信ログでも盗聴解析しない限り、投票内容は保護される仕組みになっている。 (投票したかどうか?、いつ投票したか?、については保護対象外としている)

もっとも、、、「投票総数が1人だった!」とか、「投票者全員が信任しないを選択した!!」とか、そういう場合にあっては「誰がどのような投票をしたのかを隠蔽する」が実現できない。。。(怖)

[上司評価の投票(無記名投票)]



言うまでもないが、メンバーが「2票以上」を投票することはできない。

この業務テンプレでは、(毎年!?!)3月31日の朝9時に自動的に割り当てられ、その「貴重な1票」を申請する設定となっている。(夕方18時に自動的に無効票となってしまう点にも注意が必要だ)


なお「無記名投票」のニーズは、人事考課の業務において様々に応用できるだろう。

たとえば不正な会計処理が行われた東芝において、「社長の信任・不信任を問う無記名投票」(2015.11)が行われたのは記憶に新しい。上級管理職の120人が「社長の評価」を行った結果は、取締役候補を選任する指名委員会の判断材料となったらしい。

なるほど、いっそのこと「全役員分の評価」を毎月実施するというのも良いのかも知れない。。。 各役員の「支持率」が継続して測定され、また組織内で運用が慣れてくれば、それなりの知見や気づきが得られる、、、ような気がする。

(注) 同時投票が行われた場合、すべての投票結果が反映されない場合があります(後の投票内容で上書きされてしまいます)。

[上司評価の投票(無記名投票):「1.上司評価を記入する」画面]

▼スクリプト工程『Check』の設定サンプル (サーバサイド JavaScript)
//// Config
var lockfile = "poll-lock-20160331.xml"; // lock file name

//// == ワークフローデータの参照 / Retrieving ==
// M319 Options-XML: 
// 複数の業務プロセス定義から参照される選択肢XML
// return "List<ItemView>" 
optionsList = itemDao.findAll( lockfile, true ); // OptionsXML (Public)

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

//// == ワークフローデータへの代入 / Updating ==
retVal.put("4", check );


▼スクリプト工程『投票集計に追記』の設定サンプル (サーバサイド JavaScript)
//// Config
var polldata = "poll-20160331.xml"; // counting file name

//// == ワークフローデータの参照 / Retrieving ==
// M319 Options-XML: 
// 複数の業務プロセス定義から参照される選択肢XML
// 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);

<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

[英文記事 (English Entry) ]

0 件のコメント :

コメントを投稿