このセクションの内容:

概要

DTP は、JMS イベント ブローカーを使って DTP で発生するイベントについてのリアルタイムな情報を提供します。サーバーはイベント メッセージをトピックにパブリッシュし、クライアントはトピックをサブスクライブしてイベント メッセージを受け取ることができます。

イベント ブローカーは、クライアントの接続性とメッセージの配布を NIO プロトコル (nio://) を使って管理します。デフォルト ポートは 61617 です (デフォルト ポートの変更方法については 「JMS イベント ブローカーのポート番号の変更」 を参照)。サンプル URI: nio://hostname:61617

イベント ブローカーにパブリッシュされるすべてのイベントは jms.log ファイルに記録されます。ログへのアクセス方法については 「ログ ファイルの参照」 を参照してください。

イベント ブローカー トピックへのアクセス

設定メニュー (歯車のアイコン) から [Report Center 設定] を選択し、サイドバー メニューの [イベント ブローカー] をクリックしてイベント ブローカーのインターフェイスにアクセスします。このインターフェースを使用すると、イベント ブローカーのトピックを確認できます。

MQTT のサポート

デフォルトでは、DTP は MQTT トランスポート コネクタを使用するように設定されています。トランスポート コネクタは、<DTP_DATA_DIR>/conf ディレクトリにある EventsConfig.xml 構成ファイルで指定します。

<?xml version="1.0" encoding="UTF-8"?>
<events-configuration>
	<transport-connector port="61617" />
	<transport-connector port="1883" protocol="mqtt"/>
</events-configuration>

イベント トピック

現在、以下のトピックはサブスクリプションに使用できます。

イベント トピック説明

AnalysisMetadata

このトピックは、違反エクスプローラーとテスト エクスプローラーでの解析メタデータの変更についてサブスクライバに通知します。

対応する JMSType に合わせて 2 種類のメッセージが存在します。

  • JMSType = 'violations'
  • JMSType = 'test'

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
}

BuildReview

このトピックは、変更エクスプローラー でのビルド レビューへの変更についてサブスクライバに通知します。対応する JMSType に合わせて 2 種類のメッセージが存在します。

  • JMSType = 'Review': レビューの作成、更新、削除へのリクエストが正常に満たされた場合、イベントがスローされます。
  • JMSType = 'Finding': レビュー指摘事項の作成、更新、削除へのリクエストが正常に満たされた場合、イベントがスローされます。

各メッセージには、リクエスト アクションの種類を表す文字列プロパティ action も含まれます。

  • action = 'Create'
  • action = 'Update'
  • action = 'Delete'

メッセージは、メッセージ ボディとして 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"
    }
  }
}


メッセージ ボディの JSON は、対応する /v1.3/buildReviews または /v1.3/buildReviews/{id}/findings REST エンドポイントへの正常リクエストで返される JSON と同じです。

REST 認証の提供方法を含め、REST エンドポイントの詳細については 「REST API」 を参照してください。


DataCollector

Data Collector から作成したイベントについてサブスクライバに通知します。対応する JMSType に合わせて 3 種類のメッセージが存在します。

  • JMSType = ReceivedEvent: Data Collector がレポートを受け取って処理を開始するときに、イベントがスローされます。
  • JMSType = ProcessedEvent: Data Collector がレポートの処理を正常に完了したときに、イベントがスローされます。
  • JMSType = ErroredEvent: Data Collector がレポートの処理中にエラーに遭遇したときに、イベントがスローされます。

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 トピックでは、JMStype = "violations" を使って、違反エクスプローラー (DTP 5.1.3 以前の優先度ビュー) からのメッセージをフィルタリングすることができます。詳細については 「AnalysisMetadata 」を参照してください。

このトピックは、違反エクスプローラーで加えられた、違反優先度に対する変更についてサブスクライバに通知します。メッセージ タイプは 1 種類のみなので、JMSType は必要ありません。メッセージは、違反を変更した 1 つのイベントに相当します。このメッセージの JSON は、イベント識別子と、変更された違反すべての ID を持ちます。

PrioritizationView イベント スキーマ
{
   "eventId":"102",
   "violationIds": ["8f522ef1-18bf-38a9-a9ce-dfaa3c91f4f6"],
}

eventId は API エンドポイントで使用できます。

/grs/api/v1/staticAnalysisViolations/<violationId>/prioritization/events

違反の変更履歴の配列が返されます。eventId を使って、変更があった物を相互に関連付けることができます。


Project

このトピックは、プロジェクトに対する変更についてサブスクライバに通知します。プロジェクトが作成、更新、削除されるたびに、DTP はイベントをパブリッシュします。メッセージは、メッセージ ボディとして JSON を持つ TextMessage タイプです。例:

PrioritizationView イベント スキーマ
{
   "eventId":"102",
   "violationIds": ["8f522ef1-18bf-38a9-a9ce-dfaa3c91f4f6"],
}

JMSType の値は以下のとおりです:

  • CREATED
  • UPDATED
  • DELETED

各メッセージには文字列プロパティ projectName もあります。これはプロジェクトの名前です。この文字列プロパティと JMSType を使ってメッセージ セレクタを作成できます。以下の例では、メッセージ セレクタはプロジェクトの作成を検出します。

JMSType = 'CREATED'

以下の例では、メッセージ セレクタは Parabank プロジェクトだけが更新されたことを検出します。

JMSType = 'UPDATED' and projectName = 'Parabank'

REST API を使った Project イベント トピックの拡張

/v1/projects/{id} REST エンドポイントを使用すると、プロジェクトが作成または更新された後に、プロジェクトの状態やその終了日など、プロジェクトについての追加情報を取得することができます。

たとえば、上記の例の更新された "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 の有効化

  1. <DTP_DATA_DIR>/conf ディレクトリにある EventsConfig.xml 構成ファイルを開きます。
  2. <topic-authentication> 要素を探し、enabled 属性を true に設定します (true がデフォルトです) 。認証を無効にするには、enabled 属性を false に設定します。ユーザー名とパスワードの変更は推奨しません。 
  3. DTP Server を再起動します (「DTP アプリケーションの開始」 を参照)。

認証の例外

認証を有効化した後に、特定のトピックについて認証を不要にすることができます。

  1. [DTP_HOME]/tomcat/webapps/grs/WEB-INF/springs/ ディレクトリにある events-beans.xml を開きます。
  2. destinationAuthenticationManager Bean の nonAuthenticatedTopics プロパティの list にトピック名を追加します。

    <bean id="destinationAuthenticationManager">
    	<property name="nonAuthenticatedTopics">
    		<list>
    			<value>MyTopicName</value>
    		</list>
    	</property>
    </bean>
  3. DTP Server を再起動します (「DTP アプリケーションの開始」 を参照)。


  • No labels