Sage X3 Cloud のデータをDevExpress Data Grid にデータバインドする。
CData ADO.NET Provider for Sage X3 Cloud は、サードパーティ製コントロールと組み合わせて使える標準的なADO.NET データアクセスコンポーネントを備えています。通常のADO.NET データバインドの手順に沿って進めるだけで、UI コントロールからリアルタイムデータの取得・表示を実現できます。この記事では、CData のコンポーネントを使って DevExpress UI コントロール(Windows Forms およびWeb コントロール) にデータバインドする方法を紹介します。今回は、リアルタイムのデータを可視化するチャートにデータバインドしていきます。
Sage X3 Cloud では OAuth 2.0 の Client Credentials フローを使用し、API へのアクセスには X-API-Key も必要です。AuthScheme を OAuth に設定し、以下の接続プロパティを指定します。
- URL:Sage X3 Cloud インスタンスのベース URL。
- OAuthAccessTokenUrl:OAuth トークンエンドポイント(例:https://your-auth-domain/oauth/token)。
- OAuthClientId:OAuth アプリケーションのクライアント ID。
- OAuthClientSecret:OAuth アプリケーションのクライアントシークレット。
- Audience:トークンリクエストで使用する API の Audience 値。
- XAPIKey:Sage X3 Cloud の管理者から提供された X-API-Key。
- Folder:Sage X3 のフォルダ名(例:SEED)。このフォルダがデフォルトのスキーマとして使用されます。
- Folders(オプション):Sage X3 フォルダのカンマ区切りリスト(例:SEED,PERF)。各フォルダが個別のスキーマとして公開されるため、Schema.Table 構文でフォルダをまたいだクエリを実行できます。
ドライバーは Client Credentials フローでアクセストークンを取得し、すべての API リクエストで X-API-Key とあわせて送信します。InitiateOAuth を GETANDREFRESH(デフォルト)に設定しておけば、トークンの取得と更新は自動で行われます。
Windows Forms コントロール
下のコードでは、Sage X3 Cloud でDevExpress のチャートに追加する方法を説明します。SageX3CloudDataAdapter はチャートコントロールのSeries プロパティにバインドします。コントロールのDiagram プロパティはx 軸とy 軸をカラム名として定義します。
using (SageX3CloudConnection connection = new SageX3CloudConnection(
"AuthScheme=OAuth;URL=https://x3server/;OAuthAccessTokenUrl=https://auth-domain/oauth/token;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;Audience=https://api-audience;XAPIKey=your_api_key;Folder=SEED;")) {
SageX3CloudDataAdapter dataAdapter = new SageX3CloudDataAdapter(
"SELECT BPCNUM, BPCNAM FROM BPCUSTOMER WHERE BPCNUM = 'MARTIN'", connection);
DataTable table = new DataTable();
dataAdapter.Fill(table);
DevExpress.XtraCharts.Series series = new DevExpress.XtraCharts.Series();
chartControl1.Series.Add(series);
DataTable table = new DataTable();
series.ValueDataMembers.AddRange(new string[] { "BPCNAM" });
series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.Qualitative;
series.ArgumentDataMember = "BPCNUM";
series.ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
chartControl1.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true;
}
Web コントロール
下のコードではSage X3 Cloud でDevExpress Web を操作するための設定方法を説明します。SageX3CloudDataAdapter はチャートのSeries プロパティにバインドします。Diagram プロパティはx 軸とy 軸をカラム名として定義します。
using DevExpress.XtraCharts;
using (SageX3CloudConnection connection = new SageX3CloudConnection(
"AuthScheme=OAuth;URL=https://x3server/;OAuthAccessTokenUrl=https://auth-domain/oauth/token;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;Audience=https://api-audience;XAPIKey=your_api_key;Folder=SEED;"))
{
SageX3CloudDataAdapter SageX3CloudDataAdapter1 = new SageX3CloudDataAdapter("SELECT BPCNUM, BPCNAM FROM BPCUSTOMER WHERE BPCNUM = 'MARTIN'", connection);
DataTable table = new DataTable();
SageX3CloudDataAdapter1.Fill(table);
DevExpress.XtraCharts.Series series = new Series("Series1", ViewType.Bar);
WebChartControl1.Series.Add(series);
DataTable table = new DataTable();
series.ValueDataMembers.AddRange(new string[] { "BPCNAM" });
series.ArgumentScaleType = ScaleType.Qualitative;
series.ArgumentDataMember = "BPCNUM";
series.ValueScaleType = ScaleType.Numerical;
((DevExpress.XtraCharts.SideBySideBarSeriesView)series.View).ColorEach = true;
}