Before Query Business Rule
(function executeRule(current, previous /*null when async*/ ) {
try {
var filter_role = 'a role';
var filter_group = 'HR';
var rf_unique_id = 'mobileworkaround';
var lookup_table = 'sys_user';
var userDislayName = gs.getUserDisplayName();
var hasRole = gs.getUser().hasRole(filter_role);
var isMemberOf = gs.getUser().isMemberOf(filter_group);
var deviceType = gs.getSession().getProperty('device_type');
var query = current.getEncodedQuery();
var table = current.getTableName();
var recClass = current.getRecordClassName();
if (userDislayName != 'System Administrator' &&
userDislayName != 'System' &&
userDislayName != 'Guest' &&
deviceType == 'm' &&
hasRole &&
isMemberOf &&
query.indexOf('CONTAINS') != -1 &&
query.indexOf(rf_unique_id) != -1 &&
lookup_table == table
) {
var newQuery = query.replace(/CONTAINS/g, 'STARTSWITH');
current.addQuery(newQuery);
gs.info('MSS [by ' + userDislayName + ' ] deviceType: ' + deviceType);
gs.info('MSS [by ' + userDislayName + ' ] hasRole: ' + hasRole);
gs.info('MSS [by ' + userDislayName + ' ] isMemberOf: ' + isMemberOf);
gs.info('MSS [by ' + userDislayName + ' ] query: ' + query);
gs.info('MSS [by ' + userDislayName + ' ] on table: ' + table);
gs.info('MSS [by ' + userDislayName + ' ] record class name: ' + recClass);
gs.info('MSS [by ' + userDislayName + ' ] newQuery: ' + newQuery);
}
} catch (e) {
gs.info('MSS [by ' + gs.getUserDisplayName() + ' ] error: ' + e.toString());
}
})(current, previous);