Bridgeのユースケース:Bridgeを使用したリモートデータベースとの接続

Bridgeのユースケース:Bridgeを使用したリモートデータベースとの接続

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

多くの組織では、ファイアウォールを使用してリモートデータベースを保護しています。これらのファイアウォールを経由してリモートデータベースにアクセスする方法をお探しの場合は、Bridgeが役立ちます。

プライベートネットワーク内のMySQLデータベースにアクセスするためにBridgeを使用する、実際のビジネスケースの解決方法を見てみましょう。

 

ビジネスシナリオ   

Swerio Corpは、安全なプライベートネットワーク内のMySQLデータベースですべてのデータを管理しています。同社は、さまざまなワークフローの自動化にQntrlを使用しています。そのうちの1つである休暇承認ワークフローでは、従業員の当年度の休暇残日数を取得し、Qntrlに表示することを検討しています。休暇残日数が十分にある場合、カードは承認のため従業員のマネージャーに送信されます。一方、休暇残日数がゼロ、または申請された休暇日数より少ない場合、カードは自動的に却下される必要があります。

 

また、Qntrlで休暇が承認されたら、休暇残日数もクライアントのMySQLデータベースで更新し、全体でデータの一貫性を維持する必要があります。

 

解決策   

このビジネスケースに効果的に対応するには、休暇申請フォームに必要な項目を含むボードを作成し、Bridgeとカスタム関数の機能を組み合わせて利用します。

実装 

解決策を実装するには、以下の手順に従います。

ステップ1:Bridgeの設定   

Bridgeは、Qntrlインスタンスと、ファイアウォール内にあるクライアントのアプリケーションとの間の通信を可能にするために、お客さまのローカルネットワーク上で実行される、インストール可能なJavaアプリケーションです。

Bridgeを作成し、WindowsまたはLinuxマシンからBridgeのエージェントを設定します。Bridgeを実行する詳しい手順については、ヘルプドキュメントを参照してください。


ステップ2:Bridgeでのメッセージの作成   

使用するタブ、データベースクエリー、Bridgeの値などの基本情報を保持するために、Bridgeで2つのメッセージを作成します。これらのメッセージは、後でデータベースとの通信に使用します。こちらをクリックして、Bridgeでのメッセージの実行について確認してください。

 

メッセージ1:従業員情報の取得



メッセージ2:休暇残日数の更新


ステップ3:接続の作成

接続を作成します。接続を作成する際は、次のスコープを使用します。

  1. Orchestly.job.ALL

  1. Orchestly.message.CREATE

  1. Orchestly.message.UPDATE


ステップ4:カスタム関数の作成

関数は、ビジネスルールで設定して、カードの「on-create」段階で実行する必要があります。以下の処理を行うカスタム関数を作成します。

MySQLサーバーからのデータの取得



MySQLサーバー内のデータの更新



こちらがSQLデータベースから従業員の詳細情報を取得するコードです。
  
  
  
  
  
  
  
//Fetching selected employee details from local database
params = Map();
data = '{'task_name': 'db_task','credential': {'name': 'mysql'},'task_details': {'database': 'DEMO','db_query': 'SELECT * FROM Employees where EMP_ID =' + ''' + emp_id + ''' + '','port': 3306,'query_timeout': 10000,'host': 'localhost','sql_type': 1,'connection_timeout': 10000,'allow_multiple_columns': true}}';
params.put('data',data);
resp = invokeurl
[
      url :'https://core.qntrl.in/blueprint/api/manikin001/message/6124000000050437'
      type :POST
      parameters:params
      connection:'<CONNECTION NAME>'
];
info resp;
response = resp.get('response_to').getJSON('results');
//Updating employee details in the current job
if(response != null)
{
d = response.get(0);
job_params = Map();
name = d.get(1);
job_params.put('customfield_shorttext1',name);
メール = d.get(2);
job_params.put('customfield_shorttext2',メール);
remaining_leaves = toNumber(d.get(3));
job_params.put('customfield_integer1',remaining_leaves);
r = invokeurl
[
  url :' https://core.qntrl.in/blueprint/api/manikin001/job/' + job_id
  type :POST
  parameters:job_params
  connection:'<CONNECTION NAME>'
];
}

こちらがSQLデータベース内の従業員の詳細情報を更新するコードです。
   
   
   
   
   
   
   
remaining_days = remaining_leaves.toLong();
params = Map();
data = '{'task_name': 'db_dml_task','credential': {'name': 'mysql'},'task_details': {'database': 'DEMO','db_query': {'update':['UPDATE Employees set REMAINING_LEAVES = ' + ''' + remaining_days + ''' + ' where EMP_ID =' + ''' + emp_id + ''' + '']},'port': 3306,'query_timeout': 10000,'host': 'localhost','sql_type': 1,'connection_timeout': 10000}}';
params.put('data',data);
resp = invokeurl
[
      url :'https://core.qntrl.in/blueprint/api/manikin001/message/6124000000050557'
      type :POST
      parameters:params
      connection:'<CONNECTION NAME>'
];
info resp;


ステップ5:休暇申請ボードでのカードの作成

ボード内に新しいカードを作成して、休暇申請を開始します。ボード操作画面で新しいカードを作成する方法については、リソースを参照してください。こちらは、Swerioが考案した、休暇申請に必要な従業員からの入力内容を取得するためのサンプルカードテンプレートです。



休暇申請カードには、[従業員ID]、[開始日]、[終了日]、[休暇理由]などの項目が含まれます。[従業員ID]項目への入力が完了すると、その従業員に関するその他の詳細情報がデータベースから自動的に取得されます。

[開始日]と[終了日]の項目に入力すると、システムはその日数差を計算し、[残り休暇日数]項目と照合して検証します。日数差が残り休暇日数以下の場合、カードは承認のためマネージャーに送信されます。一方、日数差が残り休暇日数を超える場合、カードは自動的に却下されます。



マネージャーがカードを承認すると、[残り休暇日数]項目が更新されます。また、2つ目のカスタム関数が実行され、この更新後の値がクライアントのデータベースと同期されます。