Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

12.3. 単一および複数リソースのデータの取得

操作または関数を実行すると、その操作(データ)から別の関数に結果をプルする必要があります。
たとえば、以下は、data 変数の結果をエクスポートおよび書き込みします。
exporter.write(data.get(0))
を使用し get(0) て、返された最初のオブジェクトを取得します。
スクリプトの次のステップで使用する可能性があるオブジェクトが多数返される場合があります。また、複数の異なる方法で処理する方法がいくつかあります。
ではなく、の 1 つのオプションは get(0)、リストの各オブジェクトで段階的に機能することです。たとえば、これにより、リソースのメトリック定義(i)のデータを取得します。

例12.3 get(i)

if( mdefs != null ) {
  if( mdefs.size() > 1 ) {
     for( i =0; i < mdefs.size(); ++i) {
          mdef = mdefs.get(i);
          var data = MeasurementDataManager.findDataForResource(resources.get(0).id,[mdef.id],start,end,1)

	  exporter.write(data.get(0));
     }
  }
  ...8<...
他のオブジェクトをアレイに送信し、そのアレイの各オブジェクトに対して操作またはタスクを実行できます。この例では、すべての JBoss AS 5 サーバーを検索し、結果をアレイに送信し、各サーバーで再起動操作を実行します。

例12.4 アレイ

//find the resources
//use a plugin filter to make sure they are all of the same type
criteria = new ResourceCriteria();
criteria.addFilterPluginName('JBossAS5')

var resources = ResourceManager.findResourcesByCriteria(criteria).toArray();
var resType = ResourceTypeManager.getResourceTypeByNameAndPlugin('JBossAS Server', 'JBossAS5');

// go through the array
var idx=0;
var jbossServers = new Array();

for( i in resources ) {
     if( resources[i].resourceType.id == resType.id ) {
          jbossServers[idx] = resources[i];
          idx = idx + 1;     
     }
}

// restart the resources
for( a in resources ) {
     var jboss = ProxyFactory.getResource(jbossServers[a].id);
     jboss.restart()
}
util.js サポートスクリプトには、アレイ、コレクション、マップ、汎用オブジェクトを使用して正しく反復する foreach 関数があります。
複数のオブジェクトを処理するために使用する方法、または複数のオブジェクトを処理する方法は、スクリプトの種類や目的によって異なります。これらは、留意すべきオプションです。