ASP.NET Web API コントロール
ComponentOne WebAPI テンプレートを使用するData Engine WebAPI
サービス > データエンジンサービス > DataEngine WebAPIの生成 > ComponentOne WebAPI テンプレートを使用するData Engine WebAPI

DataEngineサービスにデータを追加するには、次の手順に従います。

手順1: 新しいWebAPIアプリケーションの作成

  1. Visual Studioで、[ファイル]→[新規作成]→[プロジェクト]を選択して、新しいWeb APIサービスプロジェクトを作成します。
  2. インストール済みテンプレートから、[C1]→[Web]→[C1 Web APIアプリケーション]を選択して、新しいComponentOne Web APIサービスアプリケーションを作成します。
  3. アプリケーションの名前場所を設定し、[OK]をクリックします。
  4. ComponentOne ASP.NET Web APIアプリケーションウィザードで、[データエンジンサービス]オプションを選択します。

  5. ウィザードで[サービス]を選択し、[OK]をクリックすると、新しいComponentOne Web APIサービスアプリケーションが作成されます。ComponentOneテンプレートは、この新しいプロジェクトに、参照C1.Web.Api.dll、C1.DataEngine.dll、およびC1.WebApi.DataEngine.dllを追加します。

手順2:新しいモデルの作成

Olapコントロールのデータソースを作成するために、[Models]フォルダに新しいクラスを作成します。

  1. [Models]フォルダに新しいクラスを追加します(例:ProductData.cs)。
  2. モデルに次のコードを追加して、Olapのデータを定義します。
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Web;
    
    namespace DataEngineWebpi.Models
    {
        public class ProductData
        {
            private static Random r = new Random();
    
            public int ID { get; set; }
            public string Product { get; set; }
            public string Country { get; set; }
            public DateTime Date { get; set; }
            public int Sales { get; set; }
            public int Downloads { get; set; }
            public bool Active { get; set; }
            public double Discount { get; set; }
    
            private static int randomInt(int max)
            {
                return (int)Math.Floor(r.NextDouble() * (max + 1));
            }
            public static DataTable GetDataTable(int cnt, string tableName)
            {
                var sufix = cnt / 10000;
                string[] countries = "中国,インド,ロシア,米国,ドイツ,英国,日本,イタリア,
                ギリシャ,スペイン,ポルトガル".Split(',');
                string[] products = "Wijmo,Aoba,Xuni,Olap".Split(',');
                DataTable data = new DataTable(tableName);
                data.Columns.Add("ID", typeof(int));
                data.Columns.Add("Product", typeof(string));
                data.Columns.Add("Country", typeof(string));
                data.Columns.Add("Date", typeof(DateTime));
                data.Columns.Add("Sales", typeof(int));
                data.Columns.Add("Downloads", typeof(int));
                data.Columns.Add("Active", typeof(bool));
                data.Columns.Add("Discount", typeof(double));
                for (var i = 0; i < cnt; i++)
                {
                    object[] values = new object[] {
                     i,
                     products[randomInt(products.Length - 1)],
                     countries[randomInt(countries.Length - 1)],
                     new DateTime(2015, randomInt(11) + 1, randomInt(27) + 1),
                     randomInt(10000),
                     randomInt(10000),
                     randomInt(1) == 1 ? true : false,
                     r.NextDouble()
                    };
                    data.Rows.Add(values);
                }
                return data;
            }
        }
    }
    
先頭に戻る

手順3: Startup.csファイルの構成

Startup.csファイルで、クライアントアプリケーションによってアクセスされるデータソースを登録します。

  1. ソリューションエクスプローラーで、Startup.csファイルを選択して開きます。
  2. Startup1 クラス内のコードを置き換えます。
    CS
    コードのコピー
    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    using System.IO;
    using C1.DataEngine;
    using C1.Web.Api;
    using DataEngineWebpi.Models;
    
    [assembly: OwinStartup(typeof(DataEngineWebpi.Startup1))]
    
    namespace DataEngineWebpi
    {
        public class Startup1
        {
            private static string DATAPATH = Path.Combine
            (System.Web.HttpRuntime.AppDomainAppPath, "Data");
            public void Configuration(IAppBuilder app)
            {
                app.UseDataEngineProviders()
                    .AddDataEngine("complex10", () =>
                    {
                        return ProductData.GetData(100000);
                    })
                    .AddDataEngine("complex50", () =>
                    {
                        return ProductData.GetData(500000);
                    })
                    .AddDataEngine("complex100", () =>
                    {
                        return ProductData.GetData(1000000);
                    })
                    .AddDataSource("dataset10", () => ProductData.GetData(100000).ToList())
                    .AddDataSource("dataset50", () => ProductData.GetData(500000).ToList())
                    .AddDataSource("dataset100", () => ProductData.GetData(1000000).ToList())
                    .AddCube("cube",
                    @"Data Source=http://ssrs.componentone.com/OLAP/msmdpump.dll;
                        Provider=msolap;Initial Catalog=AdventureWorksDW2012Multidimensional",
                        "Adventure Works");
            }
        }
    }
    

    Startup1.csに上記のコードを追加したら、拡張メソッドRegisterDataEngineおよびRegisterDataSetを使用して、DataEngineデータとメモリデータを登録することができます。

    メモ: WebAPIサーバーでクロスドメイン要求をサポートする場合は、Startup1.csファイルのConfigurationメソッドに次のコードを追加します。

    app.UseCors(CorsOptions.AllowAll);

先頭に戻る

手順4:プロジェクトのビルドおよび実行

  1. [ビルド]→[ソリューションのビルド]をクリックして、プロジェクトをビルドします。
  2. [F5]キーを押してプロジェクトを実行します。
    ブラウザのアドレスバーで、URLパス(http://localhost:1234/api/dataengine/complex/fieldsなど)を付加して、出力を確認します。
先頭に戻る