Power Apps でIBM Cloud Object Storage データを連携利用

本記事では、Power Apps からデータベースのようにリアルタイム接続を行う方法を説明します。

Microsoft PowerApps は、データに連携するモバイルおよびタブレット向けアプリをドラッグ&ドロップとリッチな関数で実現します。CData API ServerとADO.NET Provider for IBM Cloud Object Storage (もしくは200+ の他のADO.NET Providers) を組み合わせて使い、PowerApps のリモートデータソースへの連携機能を拡張することができます。PowerApps のCommon Data Service に別途データをコピーする必要はありません。CData API Server は、IBM Cloud Object Storage データにデータベースのようなアクセスを可能にし、SaaS API やNoSQL をインメモリのSQL-92 エンジンで操作できるようにします。

CData API Server はSwagger のメタデータ標準をサポートします。Azure App Service、Microsoft Flow、およびPowerApps でSwagger メタデータからのUI 生成やコード生成が可能です。Swagger 定義を使えば、PowerApps からIBM Cloud Object Storage に連携する関数が生成できます。本記事では、それらの関数をPowerApps から使って、リモートのIBM Cloud Object Storage data に連携する方法を説明します。

Set Up the API Server

Follow the steps below to begin producing secure IBM Cloud Object Storage OData services:

Deploy

The API Server runs on your own server. On Windows, you can deploy using the stand-alone server or IIS. On a Java servlet container, drop in the API Server WAR file. See the help documentation for more information and how-tos.

The API Server is also easy to deploy on Microsoft Azure, Amazon EC2, and Heroku.

Connect to IBM Cloud Object Storage

After you deploy the API Server and the ADO.NET Provider for IBM Cloud Object Storage, provide authentication values and other connection properties by clicking Settings -> Connections and adding a new connection in the API Server administration console. You can then choose the entities you want to allow the API Server access to by clicking Settings -> Resources.

Register a New Instance of Cloud Object Storage

If you do not already have Cloud Object Storage in your IBM Cloud account, follow the procedure below to install an instance of SQL Query in your account:

  1. Log in to your IBM Cloud account.
  2. Navigate to the page, choose a name for your instance and click Create. You will be redirected to the instance of Cloud Object Storage you just created.

Connecting using OAuth Authentication

There are certain connection properties you need to set before you can connect. You can obtain these as follows:

API Key

To connect with IBM Cloud Object Storage, you need an API Key. You can obtain this as follows:

  1. Log in to your IBM Cloud account.
  2. Navigate to the Platform API Keys page.
  3. On the middle-right corner click "Create an IBM Cloud API Key" to create a new API Key.
  4. In the pop-up window, specify the API Key name and click "Create". Note the API Key as you can never access it again from the dashboard.

Cloud Object Storage CRN

If you have multiple accounts, you will need to specify the CloudObjectStorageCRN explicitly. To find the appropriate value, you can:

  • Query the Services view. This will list your IBM Cloud Object Storage instances along with the CRN for each.
  • Locate the CRN directly in IBM Cloud. To do so, navigate to your IBM Cloud Dashboard. In the Resource List, Under Storage, select your Cloud Object Storage resource to get its CRN.

Connecting to Data

You can now set the following to connect to data:

  • InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to avoid repeating the OAuth exchange and manually setting the OAuthAccessToken.
  • ApiKey: Set this to your API key which was noted during setup.
  • CloudObjectStorageCRN (Optional): Set this to the cloud object storage CRN you want to work with. While the connector attempts to retrieve this automatically, specifying this explicitly is recommended if you have more than Cloud Object Storage account.

When you connect, the connector completes the OAuth process.

  1. Extracts the access token and authenticates requests.
  2. Saves OAuth values in OAuthSettingsLocation to be persisted across connections.

Authorize API Server Users

After determining the OData services you want to produce, authorize users by clicking Settings -> Users. The API Server uses authtoken-based authentication and supports the major authentication schemes. You can authenticate as well as encrypt connections with SSL. Access can also be restricted by IP address; Access is restricted to only the local machine by default.

You will also need to enable CORS and then define the following sections by clicking Settings -> Server. As an alternative, you can select the option to allow all domains without '*'.

  1. Access-Control-Allow-Origin: Set this to a value of '*', or the domains you will be calling the API Server from.
  2. Access-Control-Allow-Methods: Set this to a value of "GET,PUT,POST,OPTIONS", or the HTTP methods you will need to use.
  3. Access-Control-Allow-Headers: Set this to "x-ms-client-request-id, authorization, content-type".

Last, you will need to configure the API Server to allow users to authenticate by passing the authtoken as a part of the URL. To do so, navigate to the www/app_data folder in the installation direction and modify the settings.cfg file to add the following line in the [Application] section:

AllowAuthTokenInURL = true

Retrieve the Swagger Metadata

You will use the metadata to create a Custom API connection. You can obtain the Swagger definition by making the following request in your browser and then saving the resulting JSON file:

http://MySite:MyPort/api.rsc/$swagger

Connect to IBM Cloud Object Storage Through the API Server

The following procedure shows how to create a simple app that searches remote IBM Cloud Object Storage data.

  1. In Microsoft PowerApps, click Custom connectors.
  2. Click Create customer connector and choose Import an OpenAPI file.
  3. Name the connector, browse to the JSON file, and click Continue.
  4. Fill in the relevant General information, ensure that Base URL is of the form /api.rsc/@myauthtoken (where myauthtoken is the AuthToken for a configure API Server user), and click Continue.
  5. Select Basic authentication for the Authentication type and use the default Parameter labels and names. Click Continue.
  6. Review the Action and Reference definitions and click Create connector.
  7. To test the connector, you will need to create a new connection. Click Test, click New Connection under Connections, and click Create.
  8. Navigate back to the connector from the Custom connectors menu and click Test. From here, you can test the available operations.

Connect the Data Source to a PowerApp

Follow the steps below to connect to IBM Cloud Object Storage from a PowerApp:

  1. From the PowerApps main menu, click Create an app and select the on-premises or cloud PowerApp Studio.
  2. Select a blank app (choose Phone layout or Tablet layout).
  3. In the View tab, click Data Sources and click Add data source.
  4. Click the Connection you created to test the connector.

Populate a Gallery

Follow the steps below to create a simple app that can search IBM Cloud Object Storage data. You will use PowerApps formulas to bind IBM Cloud Object Storage rows to rows in a gallery control.

  1. In the View tab, click Gallery -> Vertical to add a Gallery.

  2. After selecting a gallery, assign the Items property of the gallery to IBM Cloud Object Storage data on the Advanced tab of the gallery settings. The formula below will allow you to access columns in the Objects table.

    ForAll(CDataSwaggerAPI.getAllObjects().value, {myKey: Key, myEtag: Etag})
  3. Assign IBM Cloud Object Storage columns to UI elements by clicking the element and then setting the Text property (on the Advanced tab of the UI element) to ThisItem.myKey or ThisItem.myEtag.

Search IBM Cloud Object Storage Data

To filter the records displayed by the gallery, add a TextInput to your Screen, clear the Text property for the TextInput, and set the Items property of the gallery to a formula like the one below, replacing TextInput1 with the name of the TextInput control in your gallery, if necessary:

If(IsBlank(TextInput1.Text), ForAll(CDataSwaggerAPI.getAllObjects().value, {myKey: Key, myEtag: Etag}), ForAll(CDataSwaggerAPI.getAllObjects({'$filter':Concatenate("contains(Key,",TextInput1.Text,")")}).value, {myKey: Key, myEtag: Etag}))

The formula builds an OData query that the API Server executes against the remote IBM Cloud Object Storage data, ensuring that the search is run against the current data without first pulling in every record into the app. You can find more information on the supported OData in the API Server help documentation.

 
 
ダウンロード