START_EVENT_TIMER
2023-08-08
3
(C) Questetra, Inc. (MIT License)
This item periodically starts processes with the number of records matching the search query from a Kintone
App. In each string type data item of each process, each record ID will be set.
このアイテムは、kintone アプリから検索クエリに合致するレコード数の数だけ、定期的にプロセスを開始します。
各プロセスの文字型データ項目には、それぞれのレコード ID が設定されます。
https://support.questetra.com/bpmn-icons/start-event-timer-kintone-record/
https://support.questetra.com/ja/bpmn-icons/start-event-timer-kintone-record/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEAElEQVRYR8VXXWhTVxz/nZubNLlJ
bVbd6nSDglFwKkOrY+zDdAzBB1mHDoZSX/wAqw9WnPRBNzuHMJljsuksbPPBiQ4RpThlMLGNL+Jg
iiAbaARfrNqa2ObjNuQm9y/n3N7b3JvcNI6OnKfk/L9+9/f/OOcw1HmxWuMPtc1R/I3KWonwAYCl
AFoBvDRh/wzAAwC3dIaBXFo9P+fvIbUW31MCyLS3zi7qcg8YthHgr9FpDoQ+j1Q4FBp88LiaTVUA
o+3ztxHRYQYEawns1CEgyxj7LDx4r8/N3hXAWDTyIwFd/yWw04YBx5ti8e2VfFUEMBqddxpg66cj
+KQPOhOO3d9QAZx9azq/vBYmbAzwnIPo+PR+ucMbY12lNWEB4NWukRx3KzhpVguIdFBipCo+z4LF
KN6946rDC9PLChGzOywAYysj3xFDd5ml1wel52t4P1wjRNqf/VC/2QtoeZuq/NZKKPu+BZsRBiVH
oH7ZjcLtvyoCYYQjTdfiu7hQAOBDJhhSEs4+967qQGD3V2D+gM0R5cYxfngvtCsXwcLNCB7sg2cR
n032Vbh5HernO0DZtE3AgFw2o87kw0oASLZHOiXCr6VanshChH7qB5hLpxIhs7UD/p1fQF6y3JXy
wo0Ysj1byuQ6w8bmwfgp4X00GvkFwKZSrdDR3yBF3gB0HUyxzyFSs4AkgZJPIb36GiidAgs1ij1r
FYugTEqkJLWmrYwFACfCsfhmE8DNiflu2YeOnbVopfQYmF8RMsqpYI1Nxu/ECNjMlw0bTQONZ4WM
Uy70ZVmIUuveqVS8t8Kx+DITQLLkYBFGnAHP4jYLEGUzyJ8/iYbOListvNhY8wQAAPrwI2gDl9Hw
6WYb5elP3oP+9IkzDc/CsXizCYCcUicAXvVULAJkqLKAIpzy9uRpEl8dmgE9MQJp1iu1AEA4Fjcq
bDQaKQMQ/OGMvbh42/HgvgaD/tQYtIFLkN+OQuIseH3GvoMVvufCgA1AWQrkFe9D6f0eLBiayLHB
gNmSvBVzR3rh69gAz8I3J1PlAKDF/oDauxMgvWoKyorQ4FlCoHs/fB+tnxw8stegO9gIPcnpboHZ
FRycWZj6k4dQ921H8d4/zsDmf1sRlrVhqZU0ey58H3dCer0Vctu7FgtWDQjuCXpiGPn+06L98hdO
uQU29yfbsNIgqmTNB45y6GdrLtgA8E68+jvUA2LCTrlsg8htFFf0InkQ2HMQvtVroQ8PQWqZK7qB
j9ziv7enDCwy6xzFfNP1MHJxyScgnxPM60X+8rmaAptKZYcRF0x1HL9QhCrKrscxt6nrhcQEXdcr
mQmirpfS/4OJF76WW0zU82Figqjr06y0m+r2OJ2u/nfz8xwerN4wOc7tdwAAAABJRU5ErkJggg==
{
const auth = httpClient.createAuthSettingToken('kintone', 'token');
configs.putObject('conf_auth', auth);
configs.put('conf_domain', domain);
configs.put('conf_guestSpaceId', guestSpaceId);
configs.put('conf_appId', appId);
configs.put('conf_query', query);
};
/**
* レコード取得の GET リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
* @param domain
* @param guestSpaceId
* @param appId
* @param query
* @param limit
*/
const assertGetRecordsRequest = ({url, method}, domain, guestSpaceId, appId, query, limit) => {
expect(method).toEqual('GET');
let expectedUrl;
if (guestSpaceId === '') { // ゲストスペース外のアプリの場合
expectedUrl = `https://${domain}/k/v1/records.json?app=${appId}`;
} else { // ゲストスペース内のアプリの場合
expectedUrl = `https://${domain}/k/guest/${guestSpaceId}/v1/records.json?app=${appId}`;
}
if (query === '') { // 検索クエリが空の場合
query = `order by $id asc limit ${limit + 1}`;
} else { // 検索クエリが空でない場合
query = `( ${query} ) order by $id asc limit ${limit + 1}`;
}
expectedUrl += '&query=' + encodeURIComponent(query)
+ '&' + encodeURIComponent('fields[0]') + '=' + encodeURIComponent('$id');
expect(url).toEqual(expectedUrl.replace(/%20/g, '+').replace(/\(/g, '%28').replace(/\)/g, '%29'));
};
/**
* レコード取得のレスポンスを準備
* @param from レコード取得開始位置
* @param recordNum レコード数
* @return responseObj
*/
const prepareGetRecordsResponse = (from, recordNum) => {
const responseObj = {
"records": []
};
for (let i = from; i < from + recordNum; i++) {
const record = {
'$id': {
"type": '__ID__',
"value": `${i}`
}
};
responseObj.records.push(record);
}
return responseObj;
};
/**
* ドメインが不正な文字列でエラーになる場合
*/
test('Invalid Kintone domain', () => {
//