アプリケーションを作成します

データ クライアント ライブラリを使用すると、 HERE platform データアプリケーションを作成できます。 以下の手順は、 Scala ビルドツール (SBT) と Maven を使用する基本的なアプリケーションのプロセスを示しています。

資格情報にアクセスします

次の 2 種類の資格情報が必要です。

  1. プラットフォーム資格情報 -- プラットフォーム資格情報を取得するに は、 https://platform.here.com/profile/apps-and-keys ページから新しいアプリケーションを作成します。 アプリケーションを作成したら 、 [ キーの作成 ] ボタンをクリックして、これらの資格情報をダウンロードします。 資格情報をに置き $HOME/.here/credentials.propertiesます。
  2. Repository 資格情報 -- 資格情報を取得してデータ クライアント ライブラリが含まれているリポジトリにアクセスするに は、 https://platform.here.com/profile/repository にアクセスし、 Create 資格情報をクリックしてsettings.xmlファイルをダウンロードします。

プラットフォームおよびリポジトリ資格情報の取得方法の詳細について は、『 Identity & Access Management 開発者ガイド』を参照してください。

ビルドシステムを設定します

以下の手順では、 SBT および Maven プロジェクトを設定する方法について説明します。

SBT の場合、次 ~/.ivy2/.credentials の内容の新しいファイルをで作成します。

realm=Artifactory Realm
host=repo.platform.here.com
user=[REPOSITORY_USERNAME]
password=[REPOSITORY_PASSWORD]

[REPOSITORY_USERNAME] ここで、および [REPOSITORY_PASSWORD] は、ダウンロードされたからのユーザー名とパスワード settings.xmlです。 この情報は servers/server[1] 、 XML ノードで確認できます。

Maven の場合は、ダウンロード settings.xml したをにコピー ~/.m2します。

プロジェクトを作成する

build.sbt SBT または pom.xml Maven のいずれかのファイルを使用して、新しい空のプロジェクトディレクトリを作成します。

SBT
Maven
scalaVersion := "2.12.12" // data client library currently only supports Scala 2.12
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
resolvers += "HERE Repo" at "https://repo.platform.here.com/artifactory/open-location-platform/"
libraryDependencies ++= Seq(
  "com.here.platform.data.client" %% "data-engine" % "1.18.163"
)
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company</groupId>
    <artifactId>olp-data-sample</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.here.platform.data.client</groupId>
            <artifactId>data-engine_2.12</artifactId>
            <version>1.18.163</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

これでプロジェクトの設定が完了し、データ クライアント ライブラリ API の使用を開始できます。

次のコード例は、 HERE platform でアクセス権を持つカタログの HERE リソース名 (HRNS) を出力する単純なクラスを示しています。

クラスを含むファイルを、 src/main/scala または src/main/javaプロジェクトの適切なディレクトリに追加します。

Scala
Java
import akka.actor.CoordinatedShutdown.UnknownReason
import akka.actor.{ActorSystem, CoordinatedShutdown}
import com.here.platform.data.client.scaladsl.DataClient

import scala.util.{Failure, Success}

object OverviewScalaMain {

  def main(args: Array[String]): Unit = {
    implicit val actorSystem = ActorSystem()
    implicit val dispatcher = actorSystem.dispatcher

    val dataClient = DataClient()
    val adminApi = dataClient.adminApi()

    // Now you can start using the API
    adminApi
      .listCatalogs()
      .andThen {
        case Success(catalogHRNs) => catalogHRNs.foreach(println)
        case Failure(e) => e.printStackTrace()
      }
      .andThen {
        case _ => CoordinatedShutdown(actorSystem).run(UnknownReason)
      }
  }
}
import akka.actor.ActorSystem;
import akka.actor.CoordinatedShutdown;
import com.here.platform.data.client.javadsl.AdminApi;
import com.here.platform.data.client.javadsl.DataClient;

public class OverviewJavaMain {

  public static void main(String[] args) {
    ActorSystem actorSystem = ActorSystem.create();

    DataClient dataClient = DataClient.get(actorSystem);
    AdminApi adminApi = dataClient.adminApi();

    // Now you can start using the API
    adminApi
        .listCatalogs()
        .whenComplete(
            (catalogHRNs, e) -> {
              if (catalogHRNs != null) {
                catalogHRNs.forEach(System.out::println);
              } else if (e != null) {
                e.printStackTrace();
              }
            })
        // When done, shutdown the Data Client through the ActorSystem
        .thenAccept(
            unbound ->
                CoordinatedShutdown.get(actorSystem).run(CoordinatedShutdown.unknownReason()));
  }
}

Akka 依存関係

データ クライアント ライブラリは、 Akka アクターおよび Akka ストリームの上で実行され、 ActorSystem を使用してリソース ( スレッド、接続プールなど ) を管理します。 つまり、クライアントは ActorSystem をインスタンス化し、それに応じてシャットダウンする必要があります。

ActorSystem は、 1 ~ N のスレッドを割り当て、論理アプリケーションごとに 1 つ作成する重量のある構造です。

アプリケーションがすべてのタスクを完了したことが確認 CoordinatedShutdown できたら、上記の例に示すようにを呼び出して ActorSystem をシャットダウンします。 データ クライアント ライブラリは、 CoordinatedShutdown ActorSystem Terminate メソッドを直接呼び出した場合に実行されないクリーンアップタスクを追加で添付します。そのため、前者を使用してください。

メモ 以降のセクションで は、 myActorSystem および myMaterializer の参照 は、管理するアプリケーション全体の ActorSystem および ActorMaterializer を参照しています。

データクライアントライブラリのストリーミング動作の影響

データ クライアント ライブラリはデータをストリームとして解釈します。つまり、クライアントによって有効化されたバックプレッシャメカニズムは、 TCP レイヤーから開発者向け API まで、すべてのレイヤーを通して公開されます。

: クライアントはデータ クライアント ライブラリの応答を消費する必要があります。 そうでない場合、データ クライアント ライブラリは、着信データがバックプレッシャーを受けたままであると見なし、 TCP バックプレッシャーメカニズムを介して着信データを停止します。

Scala と Java の比較

データ クライアント ライブラリは、 Java バインディングと Scala バインディングの両方をサポートしています。多くのクラスには、javadslscaladslの両方の実装があります。 クラスパッケージに特定のドメイン固有言語 (DSL) が含まれていない場合、このクラスパッケージには Scala と Java の両方で利用できる getter と setter が含まれています。

データ クライアント ライブラリは Akka の上で動作するため、多く の公開 API では、SourceSinkFlowなどの Akka クラスが公開されています。 Akka ストリームに詳しくない場合 は、IteratorListSeq、などの Scala または Java ネイティブクラスを公開するデータ クライアント ライブラリで、オーバーロードされたメソッドを使用できます。

エラー処理

データ クライアント ライブラリ操作では、主に DataClientRetriableException 次の 2 種類の例外をスローできます。 - データ クライアント ライブラリを介して返された取得可能な例外の基本クラス。 DataClientNonRetriableException - データ クライアント ライブラリを介して返された、取得できない例外の基本クラス。

アーティファクト

SBT
Maven
グレードル
libraryDependencies += "com.here.platform.data.client" % "{data-client-module}" % "1.18.163"
<dependency>
  <groupId>com.here.platform.data.client</groupId>
  <artifactId>{data-client-module}</artifactId>
  <version>1.18.163</version>
</dependency>
dependencies {
  compile group: 'com.here.platform.data.client', name: '{data-client-module}', version: '1.18.163'
}

」に一致する結果は 件です

    」に一致する結果はありません