Spring Boot からDynamics 365 のデータに接続する方法

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
CData JDBC Dynamics 365 Driver を使用してSpring Boot アプリケーションからDynamics 365 に接続。

Spring Boot は、Java Web アプリケーションの開発を容易にするフレームワークです。 最小限の設定でスタンドアロンアプリケーションを作成できるのが特徴です。 CData JDBC Driver for Dynamics 365 と組み合わせることで、Spring Boot からリアルタイムのDynamics 365 のデータを扱えるようになります。 この記事では、CData JDBC Driver for Dynamics 365 を使用してSpring Boot アプリケーションでデータソースを設定し、データを取得する方法を説明します。

ビルトインの最適化されたデータ処理機能により、CData JDBC Driver は リアルタイムのDynamics 365 のデータとのやり取りにおいて比類のないパフォーマンスを発揮します。Dynamics 365 に 複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接Dynamics 365 にプッシュし、サポートされていない操作(多くの場合SQL 関数や JOIN 操作)は組み込みのSQL エンジンを利用してクライアント側で処理します。 組み込みの動的メタデータクエリにより、ネイティブのデータ型を使用して Dynamics 365 のデータを操作・分析できます。

Dynamics 365 データ連携について

CData は、Microsoft Dynamics 365 のライブデータへのアクセスと統合を簡素化します。お客様は CData の接続機能を以下の目的で活用しています:

  • Sales、Customer Service、Finance & Operations、Marketing など、Dynamics 365 エコシステム全体のデータの読み取りと書き込みができます。
  • カスタマイズ可能なキャッシュと、インテリジェントなクエリ集約・分離により、Dynamics CRM のネイティブ機能を拡張できます。
  • Azure Active Directory、Azure マネージド サービス ID 認証情報、クライアントシークレットまたは証明書を使用した Azure サービスプリンシパルなど、さまざまな方法で Dynamics 365 に安全に認証できます。
  • SQL ストアドプロシージャを使用して、Dynamics 365 エンティティを管理できます。エンティティ間の関連付けの一覧表示、作成、削除などが可能です。

CData のお客様は、データをデータウェアハウスにレプリケートしたい場合(他のデータソースと併せて)や、Microsoft エコシステム内のお気に入りのデータツール(Power BI、Excel など)または外部ツール(Tableau、Looker など)からライブ Dynamics 365 データを分析したい場合など、さまざまな理由で当社の Dynamics 365 接続ソリューションを使用しています。


はじめに


Java でSpring Boot プロジェクトを作成

IDE(このチュートリアルではIntelliJ を使用)で、Maven プロジェクトを選択します: 生成されたプロジェクトで、pom.xml ファイルを開き、Spring Boot に必要な依存関係を追加します:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
	<plugin>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-maven-plugin</artifactId>
	</plugin>

	<plugin>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-install-plugin</artifactId>
		<version>2.5.1</version>
		<executions>
			<execution>
				<id>id.install-file</id>
				<phase>clean</phase>
				<goals>
					<goal>install-file</goal>
				</goals>
				<configuration>
					<file>C:\Program Files\CData[product_name] ####\lib\cdata.jdbc.dynamics365.jar</file>
					<groupId>org.cdata.connectors</groupId>
					<artifactId>cdata-dynamics365-connector</artifactId>
					<version>23</version>
					<packaging>jar</packaging>
				</configuration>
			</execution>
		</executions>
	</plugin>
</plugins>
</build>

<dependencies>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
	<version>2.7.0</version>
</dependency>
<dependency>
	<groupId>org.cdata.connectors</groupId>
	<artifactId>cdata-dynamics365-connector</artifactId>
	<version>23</version>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>
</dependencies>



<distributionManagement>
<repository>
	<uniqueVersion>false</uniqueVersion>
	<id>test</id>
	<name>My Repository</name>
	<url>scp://repo/maven2</url>
	<layout>default</layout>
</repository>
</distributionManagement>

</project>

Note: 年(####)とバージョン番号(上記のXML スクリプトに記載)は、使用しているCData JDBC Driver の現在のバージョンに合わせて調整してください。

プロジェクト構造

java ディレクトリに新しいパッケージを作成します。通常、パッケージ名はgroupId (com.example)の後にartifactId(.MDS)を付けたものになります。

「java」ディレクトリを「Sources Root」としてマーク(青色で表示)します。これを行うには、java ディレクトリを右クリックし、「Mark Directory as」->「Sources Root」を選択します(以下を参照)。また、「resources」ディレクトリを「Resources Root」としてマークします。

データベース接続プロパティの保存

データベース接続プロパティを保存するための「application.properties」ファイルを作成します。これを行うには、「resources」フォルダを右クリックし、「New」->「File」を選択し、ファイル名を「application.properties」と入力してEnter を押します。

application.properties ファイルで、クラス名とJDBC URL を使用してDynamics 365 JDBC Driver の設定プロパティを設定します:

	spring.datasource.driver=cdata.jdbc.dynamics365.Dynamics365Driver
	spring.datasource.url=jdbc:dynamics365:OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;

組み込みの接続文字列デザイナー

JDBC URL の作成については、Dynamics 365 JDBC Driver に組み込まれている接続文字列デザイナーを使用してください。JAR ファイルをダブルクリックするか、コマンドラインからjar ファイルを実行します。

java -jar cdata.jdbc.dynamics365.jar

Dynamics 365 接続プロパティの取得・設定方法

Microsoft Dynamics 365 への接続

Microsoft Dynamics 365 ドライバーは、以下のMicrosoft Dynamics 365 エディションへの接続をサポートしています。

  • CustomerService
  • FieldService
  • FinOpsOnline (デフォルト)
  • FinOpsOnPremise
  • HumanResources
  • Marketing
  • ProjectOperations
  • Sales

Notes:

  • Supply Chain Management はFinance and Operations と同一です。これらのいずれかに接続するには、EditionFinOpsOnline またはFinOpsOnPremise のいずれかに設定します。
  • Microsoft Dynamics 365 Business Central については、個別のMicrosoft Dynamics 365 Business Central ドライバーを使用してください。
サポートされているMicrosoft Dynamics 365 エディションのいずれか接続するには、次のパラメータを設定します。
  • OrganizationURL:お使いのMicrosoft Dynamics 365 組織のURL。例えば、https://orgcb42e1d0.crm.dynamics.com
  • Edition:上記のエディション一覧に示すとおり。

Microsoft Dynamics 365 への認証

Microsoft Dynamics 365 は、Microsoft Entra ID(Azure AD)、Azure サービスプリンシパル、Azure マネージドID(MSI)を経由する認証をサポートします。これらはすべてOAuth 規格に基づきます。 認証方法の詳細は、ヘルプドキュメントを参照してください。

application.properties ファイルでプロパティを設定したら、次にそれらを構成します。

データソースの設定

まず、Dynamics 365 データソースをプライマリデータソースとしてマークします。次に、データソースBean を作成します。

DriverManagerDataSource.java ファイルを作成し、以下のようにBean を作成します。@Bean でエラーが発生する場合、 Spring Boot が正しくロードされていない可能性があります。これを修正するには、「File」->「Invalidate Caches」でキャッシュを無効にして再起動します。 また、Maven がSpring Boot の依存関係を追加していることを確認してください。

データソースBean を作成するには、DriverManagerDataSource クラスを使用します。このクラスを使用すると、 データソースのプロパティを設定できます。このJava クラスを作成するには、「com.example.MDS」パッケージを右クリックし、「New」->「Java Class」を選択します。

以下のコードは、データソースのBean 定義を示しています。各ドライバーにはBean が必要です。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;

public class DriverManagerDataSource{
	@Autowired
	private static Environment env;

	@Bean(name ="Dynamics365")
	@Primary
	public static DataSource Dynamics365DataSource()
	{

	DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
		dataSourceBuilder.driverClassName("cdata.jdbc.dynamics365.Dynamics365Driver");
		dataSourceBuilder.url("jdbc:dynamics365:OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;");
		return dataSourceBuilder.build();
	}

	//@Override
	public void setEnvironment( final Environment environment) {
	env=environment;
	}
}

次に、Dynamics 365 jar ファイルをDocuments フォルダに移動します(以下のコマンドのパスを参照)。jar ファイルのパスにスペースが含まれないようにするためです。次に、 Maven アイコン(IntelliJ の右上隅)をクリックし、「Execute Maven Goal」をクリックします。以下のコマンドを実行します:

mvn install:install-file "-Dfile=C:\Program Files\CData[product_name] ####\lib\cdata.jdbc.dynamics365.jar" -DgroupId=org.cdata.connectors -DartifactId=cdata-dynamics365-connector -Dversion=23 -Dpackaging=jar

このコマンドを実行するには、以下のいずれかの手順に従ってください:

  1. 「-Dfile location」はCData JDBC Driver のデフォルトのインストールパスのままにできます。この場合、パスを引用符で囲んでください。また、使用しているドライバーの現在のバージョンに基づいて年と「Dversion」を変更してください。
  2. 記事の前半で述べたように、 jar ファイルをDocuments フォルダに移動した場合は、提供されたコマンドのパスを変更してください。この場合、Dfile location を引用符で囲まないでください。使用しているドライバーの現在のバージョンに基づいて「Dversion」を編集してください。

Enter を押すと、以下の出力が表示されます:

接続のテスト

最後のステップは接続のテストです。(例:「MDSApplication」)の形式で新しいJava クラスを作成します。アプリケーションクラスには任意の名前を選択できます。 MDSApplication.java のmain メソッドでデータソースを呼び出します:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import java.sql.Connection;
import java.sql.SQLException;
import static com.example.demo.DriverManagerDataSources.Dynamics365DataSource;


@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
	public class MDSApplication {
		//remove the comment on the line below
		public static void main (){
		SpringApplication.run(DemoApplication.class, args);
		Connection conn = Dynamics365DataSource().getConnection();
		System.out.println("Catalog: "+ conn.getCatalog());
	}
}

生成される出力は以下のようになります:

無償トライアルと詳細情報

CData JDBC Driver for Dynamics 365 の30日間の無償トライアルをダウンロードして、Spring Boot でリアルタイムのDynamics 365 データを使い始めましょう。

はじめる準備はできましたか?

Dynamics 365 Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Dynamics 365 Icon Dynamics 365 JDBC Driver お問い合わせ

Dynamics 365 データを組み込んだパワフルなJava アプリケーションを短時間・低コストで作成して配布できます。