Haskellを使って、Microsoft Dynamics CRM、Microsoft Dynamics AX、Microsoft SharePoint、Microsoft Exchangeなどのビジネス・ソフトウェアに保存されているデータにアクセスできることをご存知でしたか?
本日は、レガシー・システムからターゲット・データ・ソースにアクセスする方法について説明する。 Connect Bridgeプラットフォーム.関数型言語であるHaskellと、データ操作によく知られたSQL構文を使用するODBCドライバを使ってデモを行う。
Connect Bridgeプラットフォームは、ODBC、JDBCドライバ、Webサービスを使用して、さまざまなターゲットシステムに接続できる強力な統合プラットフォームです。この組み合わせにより、レガシーシステムを含むあらゆる環境からの接続が可能になります。
環境設定
まず、コードを実行するための環境を準備する必要がある。これには3つの基本ステップがある:
-
- 1.Connect Bridgeを取り付ける
-
- 2.Haskell環境の準備
-
- 3.接続文字列の設定
Connect Bridgeの取り付け
Connect Bridgeの無料トライアルが可能なので、あなたの環境ですべてを試してみてから、自分に合うかどうかを判断することができる。
Haskell環境を準備する
Haskellを動作させる最も簡単な方法は、以下の指示に従うことである。 https://www.haskell.org/get-started/
インストール後、Haskell ODBCドライバをインストールする必要があります。コマンドラインで
キャベラルアップデート
cabal install HDBC-odbc
この後、Haskell環境は完全に準備されているはずです。
接続文字列を探す
このサンプルでは、Connect BridgeのODBCドライバを使用します。 あらかじめ設定されている接続文字列ターゲットシステムを知っておく必要があります。ダウンロードしたConnect Bridge PlaygroundのQueryAnalyzerツールを開きます。接続ブラウザで単一の接続を選択し、右クリックして、接続の編集を選択します。詳細]タブに移動し、接続文字列をコピーします。
提供されているCB_HaskellSample.hsファイルを開き、7行目にサンプルの接続文字列の代わりにあなたの接続文字列を配置します。
コード
Connect Bridge Serverを使用してConnect Bridge Serverにアクセスするには、パッケージをインポートする必要があります。
import Database.HDBC import Database.HDBC.ODBC
Connect Bridgeサーバとのデータベース接続を確立するには、connectODBC機能を使用します。
コン <- connectODBC 'yourConnectionString';
結果が出ないクエリを実行するには、呼び出すことができます。
run conn 'INSERT INTO account (name) VALUES ('Hello world from Haskell')'
結果をセットにしてクエリを実行するには、コールすることができます。
quickQuery conn 'SELECT accountid, name FROM account' [].
Haskellでデータを照会して結果を処理する方法を示すサンプル関数を作ってみました。
executeQuery :: IO ( ) executeQuery = do { putStr 'Enter query.' ; query <- getLine . putStrLn 'Connecting to Connect Bridge Server ...' . conn <- connectODBC connectionString. putStrLn ( 'Executing query '' ++ query ++ ''' ) . vals <- quickQuery conn query [ ] . putStrLn ( '返却された行数 ' ++ show ( length vals ) ) . putStrLn ( convertResultSetToString vals ) }
コードを呼び出す
サンプルを実行するには、パッケージに付属しているWinGHCiなどのHaskellインタープリタを使用することができます。
提供されたファイルを開く CB_HaskellSample.hs で、既に変更されている接続文字列を使用します。
呼び出したい関数名を入力するだけです。入力パラメータの入力を求められます。
例1.
この例では、HaskellからDynamics CRMに新しいアカウントを作成する方法を示します。executeQuery関数を呼び出し、SQLクエリ' を渡します。INSERT INTO account (name) VALUES ('Hello world from Haskell')'をクエリとして使用します。これでDynamics CRMに新しいアカウントレコードが即座に作成されます。
*Main> executeQuery
クエリを入力します:INSERT INTO account (name) VALUES ('Hello world from Haskell')
Connect Bridgeサーバーへの接続 ...
クエリ 'INSERT INTO account (name) VALUES ('Hello world from Haskell')' の実行
返された行数 0
例2.
この例では、Dynamics CRM から最新のアカウント 5 件を取得する方法を示します。関数 executeQuery を呼び出し、SQL クエリ 'SELECT TOP 5 accountid, name, createdon FROM account ORDER BY createdon' を渡します。オプションで、結果をCSVファイルに書き出す関数csvExportQueryを呼び出すことができます。
クエリを入力します。SELECT TOP 5 accountid, name, createdon FROM account ORDER BY createdon DESC
Connect Bridgeサーバーへの接続 ...
クエリ「SELECT TOP 5 accountid, name, createdon FROM account ORDER BY createdon DESC」の実行
返却された行数 5
account(e436e4d4-7d24-e411-a6b7-00155dc2040f),Haskell 5からのハローワールド,2014-08-15 13:12:39
account(168f7ecb-7d24-e411-a6b7-00155dc2040f),Haskell 4からのハローワールド,2014-08-15 13:12:29
account(158f7ecb-7d24-e411-a6b7-00155dc2040f),Haskell 3からのハローワールド,2014-08-15 13:12:24
account(a2079fc4-7d24-e411-a6b7-00155dc2040f),Haskell 2からのハローワールド,2014-08-15 13:12:18
account(a1079fc4-7d24-e411-a6b7-00155dc2040f),Haskell 1からのハローワールド,2014-08-15 13:12:12
結論
HaskellからMicrosoft Dynamics CRMに数行のコードで簡単にアクセスできることを実証しました。他のシステム、例えばSharePoint、Exchange、AX、Navision、Salesforceにも同じようにアクセスできる。
コネクタの全リストは以下を参照のこと。 https://www.connecting-software.com/connectors/).さらに、この記事で説明したようなちょっとした努力で、どの言語からでもこれらのシステムにアクセスすることができる。
この記事をお読みになった方は Connect Bridge無料トライアル そして、今日からそれを使って遊ぶのだ!
原文&コード:Tomas Olejnik、2015年12月10日
最終更新日:2023年5月4日