各製品の資料を入手。
詳細はこちら →コラボフローでGraphQL のデータと連携したワークフローを作成
クラウドワークフローのコラボフローで、GraphQL のデータと連携したワークフローを作成
最終更新日:2022-10-26
この記事で実現できるGraphQL 連携のシナリオ
こんにちは!リードエンジニアの杉本です。
コラボフロー(www.collabo-style.co.jp/ )は誰でも簡単に作れるクラウドベースのワークフローサービスです。さらにCData Connect Cloud と連携することで、GraphQL のデータへのクラウドベースのアクセスをノーコードで追加できます。本記事では、CData Connect Cloud 経由でコラボフローからGraphQL 連携を実現する方法を紹介します。
CData Connect Cloud はGraphQL のデータへのクラウドベースのOData インターフェースを提供し、コラボフローからGraphQL のデータへのリアルタイム連携を実現します。
Connect Cloud アカウントの取得
以下のステップを実行するには、CData Connect Cloud のアカウントが必要になります。こちらから製品の詳しい情報とアカウント作成、30日間無償トライアルのご利用を開始できますので、ぜひご利用ください。
Connect Cloud を構成
コラボフローでGraphQL のデータを操作するには、Connect Cloud からGraphQL に接続し、コネクションにユーザーアクセスを提供してGraphQL のデータのOData エンドポイントを作成する必要があります。
GraphQL に接続したら、目的のテーブルのOData エンドポイントを作成します。
(オプション)新しいConnect Cloud ユーザーの追加
必要であれば、Connect Cloud 経由でGraphQL に接続するユーザーを作成します。
- 「Users」ページに移動し、 Invite Users をクリックします。
- 新しいユーザーのE メールアドレスを入力して、 Send をクリックしてユーザーを招待します。
- 「Users」ページからユーザーを確認および編集できます。
パーソナルアクセストークン(PAT)の追加
OAuth 認証をサポートしていないサービス、アプリケーション、プラットフォーム、またはフレームワークから接続する場合は、認証に使用するパーソナルアクセストークン(PAT)を作成できます。きめ細かなアクセス管理を行うために、サービスごとに個別のPAT を作成するのがベストプラクティスです。
- Connect Cloud アプリの右上にあるユーザー名をクリックし、「User Profile」をクリックします。
- 「User Profile」ページで「Access Token」セクションにスクロールし、 Create PAT をクリックします。
- PAT の名前を入力して Create をクリックします。
- パーソナルアクセストークン(PAT)は作成時にしか表示されないため、必ずコピーして安全に保存してください。
Connect Cloud からGraphQL に接続
CData Connect Cloud では、簡単なクリック操作ベースのインターフェースでデータソースに接続できます。
- Connect Cloud にログインし、 Add Connection をクリックします。
- 「Add Connection」パネルから「GraphQL」を選択します。
-
必要な認証プロパティを入力し、GraphQL に接続します。
GraphQL サービスのURL を指定する必要があります。 ドライバーは2種類の認証をサポートします。
- Basic: AuthScheme をBasic に設定。GraphQL サービスのUser とPassword を指定する必要があります。
- OAuth 1.0 & 2.0: 詳しい説明は、ヘルプドキュメントのOAuth セクションを参照してください。
- Create & Test をクリックします。
- 「Add GraphQL Connection」ページの「Permissions」タブに移動し、ユーザーベースのアクセス許可を更新します。
Connect Cloud にGraphQL OData エンドポイントを追加する
GraphQL に接続したら、目的のテーブルのOData エンドポイントを作成します。
- OData ページに移動し、 Add をクリックして新しいOData エンドポイントを作成します。
- GraphQL 接続(例:GraphQL1)を選択し、Next をクリックします。
- 使用するテーブルを選択し、「Confirm」をクリックします。
コネクションとOData エンドポイントを設定したら、コラボフローからGraphQL のデータに接続できます。
GraphQL のデータに接続したワークフローを作成
コラボフローからConnect Cloud に連携するためのJavaScript の準備
コラボフロー上で使用するConnect Cloud との接続用JavaScriptを準備します。
(function () {
'use strict';
// Setting Propeties
const AutocompleteSetting =
{
// Autocomplete target field for Collaboflow
InputName: 'fid0',
// Collaboflow item detils line number
ListRowNumber : 15,
// Autocomplete tartget field for Connect Cloud
ApiListupFiledColumn : 'graphql_column',
// Key Column Name for Connect Cloud resource
ApiListupKeyColumn : 'graphql_keycolumn',
// Mapping between Collaboflow field and Connect Cloud column
Mappings: [
{
PartsName: 'fid1', // Collabo flow field name
APIName: 'graphql_column1' // Connect Cloud column name
},
{
PartsName: 'fid2',
APIName: 'graphql_column2'
},
{
PartsName: 'fid3',
APIName: 'graphql_column3'
},
{
PartsName: 'fid4',
APIName: 'graphql_column4'
}
]
};
const CDataConnectCloudSetting = {
// Connect Cloud URL
ConnectCloudUrl : 'http://XXXXXX',
// Connect Cloud Resource Name
ConnectCloudResourceName : 'graphql_table',
// Connect Cloud Key
Headers : { Authorization: 'Basic YOUR_BASIC_AUTHENTICATION' },
// General Properties
ParseType : 'json',
get BaseUrl() {
return CDataCloudServerSetting.ApiServerUrl + '/api.rsc/' + CDataCloudServerSetting.ApiServerResourceName
}
}
let results = [];
let records = [];
// Set autocomplete processing for target input field
collaboflow.events.on('request.input.show', function (data) {
for (let index = 1; index < AutocompleteSetting.ListRowNumber; index++) {
$('#' + AutocompleteSetting.InputName + '_' + index).autocomplete({
source: AutocompleteDelegete,
autoFocus: true,
delay: 500,
minLength: 2
});
}
});
// This function get details from Connect Cloud, Then set values at each input fields based on mappings object.
collaboflow.events.on('request.input.' + AutocompleteSetting.InputName + '.change', function (eventData) {
debugger;
let tartgetParts = eventData.parts.tbl_1.value[eventData.row_index - 1];
let keyId = tartgetParts[AutocompleteSetting.InputName].value.split(':')[1\;
let record = records.find(x => x[AutocompleteSetting.ApiListupKeyColumn] == keyId);
if (!record)
return;
AutocompleteSetting.Mappings.forEach(x => tartgetParts[x.PartsName].value = '');
AutocompleteSetting.Mappings.forEach(x => tartgetParts[x.PartsName].value = record[x.APIName]);
});
function AutocompleteDelegete(req, res) {
let topParam = '&$top=10'
let queryParam = '$filter=contains(' + AutocompleteSetting.ApiListupFiledColumn + ',\'' + encodeURIComponent(req.term) + '\')';
collaboflow.proxy.get(
CDataCloudServerSetting.BaseUrl + '?' +
queryParam +
topParam,
CDataCloudServerSetting.Headers,
CDataCloudServerSetting.ParseType).then(function (response) {
results = [];
records = [];
if (response.body.value.length == 0) {
results.push('No Results')
res(results);
return;
}
records = response.body.value;
records.forEach(x => results.push(x[AutocompleteSetting.ApiListupFiledColumn] + ':' + x[AutocompleteSetting.ApiListupKeyColumn]));
res(results);
}).catch(function (error) {
alert(error);
});
}
})();
- 「CDataConnectCloudSetting」のそれぞれのプロパティには構成したSSH Server のURL とConnect Cloud の認証情報をそれぞれ設定してください。
- 「AutocompleteSetting」はどのフィールドでオートコンプリートを動作させるか? といった設定と、API のプロパティとのマッピングを行います。
- 今回はコラボフローのデフォルトテンプレートで提供されている「12a.見積書・注文書」で利用しますので、デフォルトでは商品名のフィールドを、Product テーブルのName と紐付けて、Autocomplete を行うように構成しています。値が決定されたら、Key となるProductID を元に「型番、標準単価、仕入単価、御提供単価」をそれぞれAPI から取得した値で自動補完するようになっています。
コラボフロー側でJavaScript を登録
JavaScript を作成したら、後はコラボフローにアップするだけです。
- コラボフローにログインし「アプリ設定」→「フォーム設定」に移動します。
- フォーム一覧から使用するフォームを選択します。
- フォーム編集画面に移動後、「カスタマイズ」タブをクリックし、ファイルをアップロードから作成したJSファイルをアップロードし、保存します。
- これでConnect Cloud 経由でGraphQL のデータを取得し、自動入力補完する機能がコラボフローの申請フォームに追加できました。



クラウドアプリケーションからGraphQL のデータへのライブ接続
コラボフローからGraphQL リアルタイムデータに直接接続できるようになりました。これで、GraphQL のデータを複製せずにより多くの接続とアプリを作成できます。
クラウドアプリケーションから直接100を超えるSaaS 、ビッグデータ、NoSQL ソースへのリアルタイムデータアクセスを取得するには、CData Connect Cloud を参照してください。