グループメンバーテーブル(sys_user_grmember)のインポートセットを利用したレコード削除について

Toshikazu Matsu
Tera Contributor

コミュニティの皆様

お世話になります。以下教えて下さい。

 

「誰が」「どのグループに」所属しているかという情報は、

グループメンバーテーブル(sys_user_grmember)で管理していることは皆さんご存じだと思います。

 

このテーブルの情報を、外部でcsvを利用して管理しており、

インポートセットを利用して、情報の更新をしたいと思っています。

「単純にレコードを追加する」ことは簡単にできるのですが、
「レコードを削除する」ことを実装できなくて困っています。

たとえば、Aさんがネットワークグループに所属しているが、csv側でネットワークグループとAさんの結びつきを削除し、インポートセットを利用して、その情報を sys_user_grmemberテーブルに反映させたいです。

 

また、みなさん、このようなユーザーとグループの紐づけの管理って、どのようにされているのでしょうか?
1個1個のレコードを個別で管理しているのでしょうか?

何か良い方法があれば教えていただきたいです。
よろしくお願いいたします。

1 件の受理された解決策

iwai
Giga Sage
Transform scriptの When onCompleteで、まとめて不要な所属グループを削除する処理をするのはどうでしょうか。以下のScriptは単純な例ですが、GlideAggregateで今回インポートしたユーザーを抽出し、そのユーザーに絞ってグループを抽出して、そのグループ以外の所属していないグループメンバーを削除する。

 

//Transform script, When onComplete
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
	var grUser = new GlideAggregate('u_importset');//今回取り込みに使ったImportSetTableを指定
	grUser.addQuery('sys_import_set', import_set.getValue('sys_id'));
	grUser.groupBy('u_user');//ユーザーでグループ化
	grUser.query();
	while (grUser.next()) {
		var grGroup = new GlideAggregate('u_importset');
		grGroup.addQuery('sys_import_set', import_set.getValue('sys_id'));
		grGroup.addQuery('u_user', grUser.u_user);
		grGroup.groupBy('u_group');//ユーザーのグループでグループ化
		var groupList = [];
		while (grGroup.next()) {
			groupList.push(''+grGroup.u_group);
		}
		//groupList 以外のユーザーが所属するグループメンバーをすべて削除する処理
		//以下省略
	}
}

 

元の投稿で解決策を見る

1件の返信1

iwai
Giga Sage
Transform scriptの When onCompleteで、まとめて不要な所属グループを削除する処理をするのはどうでしょうか。以下のScriptは単純な例ですが、GlideAggregateで今回インポートしたユーザーを抽出し、そのユーザーに絞ってグループを抽出して、そのグループ以外の所属していないグループメンバーを削除する。

 

//Transform script, When onComplete
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
	var grUser = new GlideAggregate('u_importset');//今回取り込みに使ったImportSetTableを指定
	grUser.addQuery('sys_import_set', import_set.getValue('sys_id'));
	grUser.groupBy('u_user');//ユーザーでグループ化
	grUser.query();
	while (grUser.next()) {
		var grGroup = new GlideAggregate('u_importset');
		grGroup.addQuery('sys_import_set', import_set.getValue('sys_id'));
		grGroup.addQuery('u_user', grUser.u_user);
		grGroup.groupBy('u_group');//ユーザーのグループでグループ化
		var groupList = [];
		while (grGroup.next()) {
			groupList.push(''+grGroup.u_group);
		}
		//groupList 以外のユーザーが所属するグループメンバーをすべて削除する処理
		//以下省略
	}
}