第12章 短い例


CLI スクリプトは、イベントの特定のフローに従います。リソースやオブジェクトの検索、オペレーションの実行など、そのワークフロー内の各機能要素は、リモート API に独自のクラスを持ちます。
JBoss ON CLI スクリプトのほとんどのアクションは繰り返し可能です。プラットフォームの検索を実行するか、メトリックのライブデータを取得する部分は、CLI スクリプトで非常に似ています。
本セクションでは、1 つの特定の機能タスクを実行する基本的な例を紹介します。これらのスクリプトサンプルは、大規模なスクリプトワークフローで一貫して使用でき、タスク自動化の一部として使用できます。

12.1. 検索

すべてのオブジェクトマネージャーは、データ取得の操作を定義します。ほとんどのマネージャーはデータ取得の 基準ベース の操作を定義します。つまり、検索は JBoss ON オブジェクト内の属性を基にできます。
基準ベースの検索には、フォームにメソッドが含まれる findオブジェクトByCriteriaそのため、リソース find メソッドは以下のようになります。 findResourcesByCriteria グループの検索方法は findResourceGroupsByCriteria.
検索は、対応する JPA-QL クエリーに変換されます。
org.rhq.core.domain.criteria パッケージに存在する基準クラス。

12.1.1. 基本検索基準の設定

最も簡単な基準は、追加の検索パラメーターを使用せずに、リソースタイプなどのものに基づいて結果を定義することです。
たとえば、リソースタイプや ID で制限するフィルターがないため、これによりインベントリー内のコミットされたリソースがすべて取得されます。
rhqadmin@localhost:7080$ var criteria = new ResourceCriteria() // this sets the criteria to use for the search
rhqadmin@localhost:7080$ criteria.clearPaging() // this clears the 200 item page size to return all entries
rhqadmin@localhost:7080$ var resources = ResourceManager.findResourcesByCriteria(criteria) // this actually runs the search
rhqadmin@localhost:7080$ pretty.print(resources) // this prints the search results
id    name   versio curren resour
-------------------------------------------------------------------------------
10001 server Linux  UP     Linux
10002 server AS 4.2 UP     JBossA
10392 full-h        UP     Profil
10014 AlertH        UP     EJB3 S
10015 Adviso        UP     EJB3 S
10016 DataAc        UP     EJB3 S
10017 Affini        UP     EJB3 S
10011 Access        UP     Access
10391 ha            UP     Profil
...8<...
Copy to Clipboard Toggle word wrap
Which findResourcesByCriteria() は、検索を実行するもの、 pretty.print 結果を表示するには、メソッドが必要です。
この基本基準検索は、以下の JPA-QL クエリーに変換されます。
SELECT r
FROM Resource r
WHERE ( r.inventoryStatus = InventoryStatus.COMMITTED
Copy to Clipboard Toggle word wrap

12.1.2. ソートの使用

基本的な検索基準を調整して、リソースの結果をプラグインでソートできるようにします。
ソートを追加するには、呼び出します。 criteria.addSortPluginName().ソート基準には、フォームにメソッドが含まれる AddSortXXX(PageOrdering order).
例:
rhqadmin@localhost:7080$ var criteria = new ResourceCriteria() 
rhqadmin@localhost:7080$ criteria.addSortPluginName(PageOrdering.ASC) // adds a sort order to the results
rhqadmin@localhost:7080$ resources = ResourceManager.findResourcesByCriteria(criteria)
Copy to Clipboard Toggle word wrap
この基準は以下の JPA-QL クエリーに変換されます。
SELECT r
FROM Resource r
WHERE ( r.inventoryStatus = InventoryStatus.COMMITTED )
ORDER BY r.resourceType.plugin ASC
Copy to Clipboard Toggle word wrap

12.1.3. フィルターの使用

この例のリソース名など、追加の一致する基準を追加すると、検索結果をさらに絞り込むことができます。フィルタリングをすべての基準に追加するには、フォームのメソッドを使用します。 addFilterXXX().
rhqadmin@localhost:7080$ var criteria = new ResourceCriteria() 
rhqadmin@localhost:7080$ criteria.addFilterResourceTypeName('JBossAS Server') // a search filter
rhqadmin@localhost:7080$ resources = ResourceManager.findResourcesByCriteria(criteria)
Copy to Clipboard Toggle word wrap
結果として、JPA-QL クエリーは以下のようになります。
SELECT r
FROM Resource r
WHERE ( r.inventoryStatus = InventoryStatus.COMMITTED
AND LOWER( r.resourceType.name )  like 'JBossAS Server' ESCAPE '\\' )
Copy to Clipboard Toggle word wrap
このコードはインベントリー内のすべての JBoss サーバーを取得します。1 つの検索で使用するフィルターが複数になる可能性があります。たとえば、特定のエージェントによって登録された JBoss サーバーを検索します。
rhqadmin@localhost:7080$ var criteria = new ResourceCriteria()
rhqadmin@localhost:7080$ criteria.addFilterResourceTypeName('JBossAS Server')
rhqadmin@localhost:7080$ criteria.addFilterAgentName('localhost.localdomain')
rhqadmin@localhost:7080$ resources = ResourceManager.findResourcesByCriteria(criteria)
Copy to Clipboard Toggle word wrap
これにより、以下の JPA-QL クエリーが生成されます。
SELECT r
FROM Resource r
WHERE ( r.inventoryStatus = InventoryStatus.COMMITTED
AND LOWER( r.agent.name )  like 'localhost.localdomain' ESCAPE '\\' )
Copy to Clipboard Toggle word wrap

12.1.4. 関連付けの取得

関連付け は、親および子リソースの階層を示します。リソースを取得したら、特別な フェッチ メソッドを使用して、関連する親リソースまたは子リソースを表示できます。
指定のサーバーに子リソースがある場合でも、検索後に子の一覧を出力すると失敗します。
...8<...
rhqadmin@localhost:7080$ resource = resources.get(0)
rhqadmin@localhost:7080$ if (resource.childResources == null) print('no child resources')
Copy to Clipboard Toggle word wrap
そのため、1 対多の関連において、レイジーロードがドメインレイヤー全体で使用されます。子リソースは遅延的にロードされるため、子のリストは検索基準でフェッチとして明示的に設定する必要があります。
例:
rhqadmin@localhost:7080$ criteria.addFilterResourceTypeName('JBossAS Server')
rhqadmin@localhost:7080$ criteria.fetchChildResources(true)
rhqadmin@localhost:7080$ resources = ResourceManager.findResourcesByCriteria(criteria)
rhqadmin@localhost:7080$ resource = resources.get(0)
rhqadmin@localhost:7080$ if (resource.childResources == null) print('no child resources'); else pretty.print(resource.childResources)
id  name                               versio resourceType
-----------------------------------------------------------
222 AlertManagerBean                   EJB3 Session Bean
222 SchedulerBean                      EJB3 Session Bean
222 AlertDefinitionManagerBean         EJB3 Session Bean
222 AlertConditionConsumerBean         EJB3 Session Bean
222 PartitionEventManagerBean          EJB3 Session Bean
...8<...
Copy to Clipboard Toggle word wrap
この出力は、その出力によって異なります。これらは JBoss ON サーバーの子リソースです。生成される JPA-QL クエリーは以下のようになります。
SELECT r
FROM Resource r
LEFT JOIN FETCH r.childResources
WHERE ( r.inventoryStatus = InventoryStatus.COMMITTED
AND LOWER( r.resourceType.name )  like 'JBossAS Server' ESCAPE '\\' )
Copy to Clipboard Toggle word wrap

12.1.5. ページサイズの設定

ほとんどの検索では、ページ化された結果のリストが返されます。デフォルトでは、ページ化された結果は 200 エントリーに制限されます。たとえば、インベントリーのすべてのリソースを返そうとすると、最初の 200 リソースのみが返されますが、データベースを直接クエリーすると、複数のリソースが返される可能性があります。
The 条件 クラスは、検索結果のページサイズを制御するために使用できるメソッドを定義します。

例12.1 ページサイズの消去

200 を超える結果がある場合は、一致するすべてのリソースを 1 つの結果セットに含める必要がある場合は、ページ制限を以下で消去することができます。 clearPaging
var criteria = new ResourceCriteria()
criteria.clearPaging()
var resources = ResourceManager.findResourcesByCriteria(criteria)
Copy to Clipboard Toggle word wrap

例12.2 ページサイズの設定

異なるページ制限を使用する必要がある場合がありますが、明確さや制御のために、ページングを有効にする必要があります。
The setPaging method は、指定の検索のページ数とページサイズを設定します。通常、ページは 1 つのみであるため、ページ番号は 0 に設定され、必要に応じてページサイズをリセットできます。
rhqadmin@localhost:7080$ var criteria = new ResourceCriteria()

rhqadmin@localhost:7080$ criteria.getPageSize()
200

rhqadmin@localhost:7080$ criteria.getPageNumber()
0

rhqadmin@localhost:7080$ criteria.setPaging(0,300)

rhqadmin@localhost:7080$ var resources = ResourceManager.findResourcesByCriteria(criteria)
id    name                                          currentAvailability resourceType
------------------------------------------------------------------------------------------------------------------
10032 RHQDS                                         UP                Datasource
10033 ResourceFactoryManagerBean                    UP                EJB3 Session Bean
10034 CoreTestBean                                  UP                EJB3 Session Bean
10035 rhq-postinstaller.war (//localhost/installer) UP                Web Application (WAR)
10036 ResourceMetadataManagerBean                   UP                EJB3 Session Bean
10037 SystemInfoManagerBean                         UP                EJB3 Session Bean
10105 wstools.sh                                    UP                Script
10038 PartitionEventManagerBean                     UP                EJB3 Session Bean
10039 CallTimeDataManagerBean                       UP                EJB3 Session Bean
10040 AlertDefinitionManagerBean                    UP                EJB3 Session Bean
10041 DiscoveryTestBean                             UP                EJB3 Session Bean
10123 wsconsume.sh                                  UP                Script
10042 ROOT.war (//localhost/)                       UP                Web Application (WAR)
10044 AlertManagerBean                              UP                EJB3 Session Bean
10045 AgentManagerBean                              UP                EJB3 Session Bean
... 8< ...
300 rows
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat