DTP は、JMS イベント ブローカーを使って DTP で発生するイベントについてのリアルタイムな情報を提供します。サーバーはイベント メッセージをトピックにパブリッシュし、クライアントはトピックをサブスクライブしてイベント メッセージを受け取ることができます。
イベント ブローカーは、クライアントの接続性とメッセージの配布を NIO プロトコル (nio://) を使って管理します。デフォルト ポートは 61617 です (デフォルト ポートの変更方法については 「Configuring the JMS Events Broker Port」 を参照)。サンプル URI: nio://hostname:61617
イベント ブローカーにパブリッシュされるすべてのイベントは jms.log ファイルに記録されます。ログへのアクセス方法については 「ログ ファイルの参照」 を参照してください。
このセクションの内容:
MQTT のサポート
デフォルトでは、DTP は MQTT トランスポート コネクタを使用するように設定されています。トランスポート コネクタは、[DTP_HOME]/conf ディレクトリにある EventsConfig.xml 構成ファイルで指定します。
<?xml version="1.0" encoding="UTF-8"?> <events-configuration> <transport-connector port="61617" /> <transport-connector port="1883" protocol="mqtt"/> </events-configuration>
イベント トピック
以下のトピックは現在サブスクリプションに使用できます。
イベント トピック | 説明 |
---|---|
| このトピックは、違反エクスプローラーとテスト エクスプローラーでの解析メタデータの変更についてサブスクライバに通知します。 対応する
JSON メッセージのボディは以下のスキーマを使用します。 AnalysisMetadata イベント スキーマ { "fields": [{ "newValue": "Retest", "fieldName": "action" }], "type": "test", "date": "2015-06-08T17:12:39.323+0000", "user": "admin", "ids": ["8a981276-e694-337e-b543-2187ab610c95"], eventId": 18 } |
| このトピックは、変更エクスプローラー でのビルド レビューへの変更についてサブスクライバに通知します。対応する
各メッセージには、リクエスト アクションの種類を表す文字列プロパティ action も含まれます。
メッセージは、メッセージ ボディとして JSON を持つ TextMessage タイプです。例: BuildReview イベント スキーマ { "type": "Review", "action": "Create", "entity": { "id": "36", "baselineBuild": { "id": "BaselineBuild" }, "targetBuild": { "id": "TargetBuild" }, "name": "ReviewName", "author": "admin", "metadata": {} }, "activity": { "author": "admin", "date": "2016-12-09T18:50:11Z", "changes": { "name": "ReviewName" } } }
REST 認証の提供方法を含め、REST エンドポイントの詳細については 「REST API」 を参照してください。 |
DataCollector | Data Collector から作成したイベントについてサブスクライバに通知します。対応する JMSType に合わせて 3 種類のメッセージが存在します。
JSON メッセージのボディは以下のスキーマを使用します。 DataCollector イベント スキーマ { "reportFileName":"javaStaticAnalysisRun007.xml", "eventTime":"2014-07-10 16:31:04", "status":"ReceivedEvent" } ProcessedEvent の場合、JSON のbody にはさらに以下の情報が含まれます。 { "reportFileName": "em.xml", "eventTime": "2014-09-30 15:20:06", "status": "ProcessedEvent", "fixedViolationsCount": 0, "newViolationsCount": 391, "suppressedViolationsCount": 48, "violationsCount": 439, "runConfigurationId": "33", "runId": "580", "testConfig": { "name": "Recommended Rules", "machine": "embuilder1.parasoft.com", "user": "jenkins", "pseudoUrl": "builtin://Recommended Rules" }, "resultsSession": { "id": "1412929102566", "project": "Environment Manager", "time": "2014-09-30T14:44:46-07:00", "hasVoils":"true", "tag": "Recommended Rules", "toolId": "jtest", "toolVer": "10.0.6.201406011700", "toolName": "Parasoft Jtest", "machine": "embuilder1.parasoft.com", "lang": "en_US", "climode": "true" } } |
PrioritizationView | このトピックは DTP 5.1.4 以降では非推奨です。現在このトピックを使用している場合、テスト エクスプローラーでの変更も通知する AnalysisMetdata トピックに切り替えることを強く推奨します。AnalysisMetdata トピックでは、 このトピックは、違反エクスプローラーで加えられた、違反優先度に対する変更についてサブスクライバに通知します。メッセージ タイプは 1 種類のみなので、JMSType は必要ありません。メッセージは、違反を変更した 1 つのイベントに相当します。このメッセージの JSON は、イベント識別子と、変更された違反すべての ID を持ちます。 PrioritizationView イベント スキーマ { "eventId":"102", "violationIds": ["8f522ef1-18bf-38a9-a9ce-dfaa3c91f4f6"], }
違反の変更履歴の配列が返されます。eventId を使って、変更があった物を相互に関連付けることができます。 |
Project | このトピックは、プロジェクトに対する変更についてサブスクライバに通知します。プロジェクトが作成、更新、削除されるたびに、DTP はイベントをパブリッシュします。メッセージは、メッセージ ボディとして JSON を持つ TextMessage タイプです。例: PrioritizationView イベント スキーマ { "eventType":"CREATED", "project": ["id":"27","name":"Parasbank"] } JMSType の値は以下のとおりです。
各メッセージには文字列プロパティ projectName もあります。これはプロジェクトの名前です。この文字列プロパティ projectName と JMSType を使ってメッセージ セレクタを作成できます。以下の例では、メッセージ セレクタはプロジェクトの作成を検出します。 JMSType = 'CREATED' 以下の例では、メッセージ セレクタは Parabank プロジェクトだけが更新されたことを検出します。
REST API を使った Project イベント トピックの拡張 /v1/projects/{id} エンドポイントを使用すると、プロジェクトが作成または更新された後に、プロジェクトの状態やその終了日など、プロジェクトについての追加情報を取得することができます。 たとえば、上記の例の更新された "Parabank" プロジェクトのプロジェクト ID が 27 だとします。この URL に GET を適用して、適切なホストとポートを置き換えることができます。 https://yourserver:8443/grs/api/v1/projects/27 REST 認証の提供方法を含め、REST エンドポイントの詳細については 「REST API」 を参照してください。 |
トピックのパブリッシュの認証
認証は、トピックへのサブスクリプションには不要ですが、トピックへのパブリッシュには必要です。EventsConfig.xml または events-beans.xml 構成ファイルに変更を加えたら、変更を有効にするために、必ず DTP Server を再起動しなければなりません。
AuthenticationTopic の有効化
- [DTP_HOME]/conf ディレクトリにある EventsConfig.xml を開きます。
- <topic-authentication> 要素を探し、enabled 属性を true に設定します (true がデフォルトです) 。認証を無効にするには、enabled 属性を false に設定します。ユーザー名とパスワードの変更は推奨しません。
- DTP Server を再起動します (「DTP サービスの開始」 を参照)。
認証の例外
認証を有効化した後に、特定のトピックについて認証を不要にすることができます。
- [DTP_HOME]/tomcat/webapps/grs/WEB-INF/springs/ ディレクトリにある events-beans.xml を開きます。
destinationAuthenticationManager Bean の nonAuthenticatedTopics プロパティの list にトピック名を追加します。
<bean id="destinationAuthenticationManager"> <property name="nonAuthenticatedTopics"> <list> <value>MyTopicName</value> </list> </property> </bean>
- DTP Server を再起動します (「DTP サービスの開始」 を参照)。