文字列, パスワード生成 (String, Generate Password)
ランダム文字列を生成します。案件トークンがこの自動工程に到達すると、都度、指定した長さの文字列が生成されます。記号混在や特定文字(Iとl)は不使用といった複雑な生成ルールも実現可能です。「ユーザ初期パスワードを設定」や「ダウンロード用パスワードを設定」といった業務工程を自動化します。
Configs
- A: 文字グループをセットしてください (例 “acfghjknrsuxyzACFGHJKNRSUXYZ”) *#{EL}
- a: 文字出現回数をセットしてください (例 “4”) *#{EL}
- B: 文字グループをセットしてください (例 “23456789”)#{EL}
- b: 文字出現回数をセットしてください (例 “4”)#{EL}
- C: 文字グループをセットしてください (例 “#$%&+-“)#{EL}
- c: 文字出現回数をセットしてください (例 “4”)#{EL}
- D: 文字グループをセットしてください (例 “”)#{EL}
- d: 文字出現回数をセットしてください (例 “”)#{EL}
- E: 生成パスワードが格納される文字列型データを選択してください (更新) *
Script (click to open)
// GraalJS Script (engine type: 2)
// (c) 2021, Questetra, Inc. (the MIT License)
//////// START "main()" ////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
const groupA = configs.get( "conf_GroupA" ) + ""; // config required
const timesA = configs.get( "conf_TimesA" ) + ""; // config required
const groupB = configs.get( "conf_GroupB" ) + ""; // config not required
const timesB = configs.get( "conf_TimesB" ) + ""; // config not required
const groupC = configs.get( "conf_GroupC" ) + ""; // config not required
const timesC = configs.get( "conf_TimesC" ) + ""; // config not required
const groupD = configs.get( "conf_GroupD" ) + ""; // config not required
const timesD = configs.get( "conf_TimesD" ) + ""; // config not required
const dataIdE = configs.get( "conf_DataIdE" ) + ""; // config required
// Design-time Config Format Check
let numA = 0;
let numB = 0;
let numC = 0;
let numD = 0;
const positiveInt = /^([1-9]\d*)$/; // RegExp
if( groupA === "" ){
throw new Error( "\n AutomatedTask ConfigError:" +
" Config {Group A} is empty \n" );
}
if( positiveInt.test( timesA ) ){
numA = parseInt(timesA, 10);
}else{
throw new Error( "\n AutomatedTask ConfigError:" +
" Config Number {a} is not a positive integer \n" );
}
if( groupB !== "" ){
if( positiveInt.test( timesB ) ){
numB = parseInt(timesB, 10);
}else{
engine.log( " AutomatedTask ConfigWarning:" +
" Config Number {b} is not a positive integer" );
}
}
if( groupC !== "" ){
if( positiveInt.test( timesC ) ){
numC = parseInt(timesC, 10);
}else{
engine.log( " AutomatedTask ConfigWarning:" +
" Config Number {c} is not a positive integer" );
}
}
if( groupD !== "" ){
if( positiveInt.test( timesD ) ){
numD = parseInt(timesD, 10);
}else{
engine.log( " AutomatedTask ConfigWarning:" +
" Config Number {d} is not a positive integer" );
}
}
//// == Data Retrieving / ワークフローデータの参照 ==
// nothing (This Service Task is a CREATE type)
//// == Calculating / 演算 ==
let tmpPassword = "";
engine.log( " AutomatedTask Number of A-Characters: " + numA );
for( let i = 0; i < numA; i++ ){
tmpPassword += groupA.charAt( Math.floor( Math.random() * groupA.length ) );
}
engine.log( " AutomatedTask Number of B-Characters: " + numB );
for( let i = 0; i < numB; i++ ){
tmpPassword += groupB.charAt( Math.floor( Math.random() * groupB.length ) );
}
engine.log( " AutomatedTask Number of C-Characters: " + numC );
for( let i = 0; i < numC; i++ ){
tmpPassword += groupC.charAt( Math.floor( Math.random() * groupC.length ) );
}
engine.log( " AutomatedTask Number of D-Characters: " + numD );
for( let i = 0; i < numD; i++ ){
tmpPassword += groupD.charAt( Math.floor( Math.random() * groupD.length ) );
}
// shuffle (Fisher-Yates)
let tmpArray = tmpPassword.split("");
let j = tmpArray.length;
while ( j > 1 ) {
let k = Math.floor( Math.random() * j );
j = j - 1;
if (j == k) continue;
let tmp = tmpArray[j];
tmpArray[j] = tmpArray[k];
tmpArray[k] = tmp;
}
//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdE, tmpArray.join("") );
} //////// END "main()" ////////

Download
2021-07-05 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/string-generate-password-2021/
Addonファイルのインポートは Professional でのみご利用いただけます
Notes
- A群からa回、B群からb回、C群からc回、D群からd回の文字選択が行われ、それらのシャッフル文字列が、Eで選択したデータ項目に格納されます
- EL式設定でワークフローデータを参照する設定にすれば、文字列長や文字種を動的に変化させることも可能です
- 組み込みの自動工程「データ更新」でも、[0-9a-zA-Z]{8} の文字列生成が可能です。 e.g. “#{#randomString(8)}”
Capture
See also
Related