15. エンタープライズグレード¶
15.1. テナント管理¶
15.1.1. サブテナントを作成する¶
画面右上のアプリケーションスイッチャ>「管理」を押下し、管理画面に移動します。そして、ナビメニューから「テナント」>「サブテナント」を押下します。次に画面中央(初回のみ)、またはトップメニューバー右にある「テナントを作成」ボタンを押下します。
必須事項(ドメイン/URL、名前、連絡先電話番号、管理者のEメールアドレス、管理者のユーザー名)を入力します。
「保存」を押下します。
管理者のEメールアドレスに、パスワードリセットメールが飛ぶので、1章の通りパスワードリセットを実施することで、サブテナントにログインができ、以下の画面が表示されます。
15.1.2. サブテナントの削除受付¶
それぞれのサブテナントの右側にあるメニューアイコンをクリックして、削除受付をクリックします。
「テナントの削除受付」ポップアップが出るので、「削除受付」を押下します。
3. 親テナント管理者のパスワードを入力し、「確認」を押下すると、該当サブテナントの削除受付が実施されます。削除受付後、該当サブテナントは課金対象から除外され、実際の削除処理は、6か月経過後にバッチ処理によって実行されます。 ※削除受付後から6ヶ月間に限り削除受付の取り下げが可能です。
15.1.3. サブテナントの削除受付を取り消す¶
警告
削除受付後から6ヶ月間に限り、削除取り消しが可能です。削除取り消しをクリックすることで再度アクティブ(課金対象)となります。 アクティブ化する際は削除受付時と異なり、ボタンを押下すると即時反映されますので本操作の際はご注意ください。
削除受付を取り消したいサブテナントの右側にあるメニューアイコンをクリックして、削除取り消しをクリックします。
2. 「削除取り消し」を押下すると、該当のサブテナントが再アクティブ化され削除受付が取り消された旨のポップアップが表示されます。 ※アクティブ化すると当月より課金対象となります。
15.2. シェアードカスタムストリーミング処理機能¶
15.2.1. シェアードカスタムストリーミング処理機能について¶
using com.apama.cumulocity.MeasurementFragment;
using com.apama.cumulocity.Alarm;
monitor ThresholdAlarmRule {
constant float THRESHOLD := 10.0;
action onload() {
monitorMeasurements();
}
action monitorMeasurements() {
monitor.subscribe(MeasurementFragment.SUBSCRIBE_CHANNEL);
on all MeasurementFragment(type="my_measurement", valueFragment="my_frag", valueSeries="my_series") as m {
if m.value > THRESHOLD {
Alarm alarm := Alarm("","my_alarm",m.source,currentTime,"Threshold exceeded",
Alarm.STATUS_ACTIVE,Alarm.SEVERITY_MINOR,1,new dictionary<string,any>);
send alarm to Alarm.SEND_CHANNEL;
}
}
}
}
マルチテナント向けサンプルコード
// マルチテナント用に以下3行追加
using com.apama.cumulocity.TenantSubscriptionNotifier;
using com.apama.cumulocity.TenantDetails;
using com.apama.cumulocity.SharedConnection;
using com.apama.cumulocity.MeasurementFragment;
using com.apama.cumulocity.Alarm;
// マルチテナント用に以下1行追加
using com.apama.cumulocity.notifications2.SubscribeTenantNotifications;
monitor ThresholdAlarmRule {
constant float THRESHOLD := 10.0;
// マルチテナント用に以下1行追加
SharedConnection connection;
// マルチテナント用に以下4行追加
action onload() {
TenantSubscriptionNotifier notifier := TenantSubscriptionNotifier.create().
onSubscription(tenantSubscribed).
onUnsubscription(tenantUnsubscribed);
}
// マルチテナント用に以下2行追加
action tenantSubscribed(TenantDetails tenant) {
connection := SharedConnection.createForTenant(tenant);
// マルチテナント用に以下1行追加
monitorMeasurements();
send SubscribeTenantNotifications(tenant, com.apama.cumulocity.Util.generateReqId()) to SubscribeTenantNotifications.SEND_CHANNEL;
}
// マルチテナント用に以下1行修正
action monitorMeasurements() {
monitor.subscribe(connection.getChannel(MeasurementFragment.SUBSCRIBE_CHANNEL));
// マルチテナント用に以下2行修正
on all MeasurementFragment(type="my_measurement", valueFragment="my_frag", valueSeries="my_series") as m {
if m.value > THRESHOLD {
Alarm alarm := Alarm("","my_alarm",m.source,currentTime,"Threshold exceeded",
"ACTIVE","MINOR",1,new dictionary<string,any>);
send alarm to connection.getChannel(Alarm.SEND_CHANNEL);
}
}
}
// マルチテナント用に以下3行追加
action tenantUnsubscribed(string tenantId) {
connection.destroy();
}
// マルチテナント用に以下3行追加
action ondie {
connection.destroy();
}
}







