サービスの基礎知識

本ページでは、SkyOnDemandでサービスを開発するにあたって必要となる、基本的な概念や機能・用語、および簡単なスクリプトの作成手順について記述します。

サービスの基本要素

サービスの基本的な要素について説明します。

スクリプト

スクリプトとは、SkyOnDemand Server上で公開・実行されるサービスを構成する一連の処理の流れを記述したものです。プログラミング言語で言い換えると、ソースコードにあたります。
スクリプトはデザイナで設計・開発します。また、スクリプトからスクリプトを呼び出すこともできます。この際に呼び出されたスクリプトのことを「子スクリプト」、呼び出したスクリプトを「親スクリプト」と呼びます。

プロジェクト

プロジェクトとは、関連するスクリプトをまとめたものです。SkyOnDemandでは、プロジェクト単位で読み込み・保存を行います。
サーバに保存したプロジェクトはマイプロジェクトから参照することができます。また、サーバにサービスとして登録する際もプロジェクト単位で行います。

サービス

サービスとは、スクリプトがサーバに登録され、ほかのプロジェクトのスクリプトやトリガーなどの実行ツールから呼び出せる状態になったものを表します。
マイサービスで管理します。

オペレーション

オペレーションは、データの読み取りや変換、書き込みなどの個々の処理を行う単位です。オペレーションはデザイナ上では1つのアイコン(コンポーネントアイコン)として表示されます。
オペレーション間で処理の流れやデータの流れ(フロー)を作成する場合には、流れを作りたい方向にコンポーネントアイコンをドラッグ&ドロップすることで関連付けられます。SkyOnDemandでは、処理の流れとデータの流れを別々に定義することができます。つまり、複数のオペレーションで同一の読み取りオペレーションの結果データを再使用することができ、何度も読み取り処理を行う必要はありません。

コンポーネント

コンポーネントは、オペレーションの集合体です。
コンポーネントは、以下の要素で構成されています。

アダプタ

アダプタは、主にデータベースなどの外部のシステムからデータの読み取り、書き込みを行うコンポーネントです。
SkyOnDemandのアダプタは、デザイナのツールパレット上では以下のようなカテゴリに分類されます。

カテゴリ 説明
基本 妥当性検証やアサーションなどのアダプタが属するカテゴリです。
データベース RDBやXMLDBなどの各種データベースに接続するアダプタが属するカテゴリです。
ファイル CSVやXMLなどの各種ファイルフォーマットに対応したアダプタが属するカテゴリです。
ネットワーク メールやFTPなどの各種ネットワークサービスに接続するアダプタが属するカテゴリです。
クラウド 各種クラウドサービスに接続するアダプタが属するカテゴリです。

コンバータ

コンバータは、アダプタで読み取った結果データ変数を変換するためのコンポーネントです。
デザイナのツールパレット上では、主に「変換」カテゴリに属します。
SkyOnDemandでは、以下の種類のコンバータが用意されています。また、Mapperでは変換処理をGUIで設定できる専用のエディタ(Mapperエディタ)を使用することができます。

コンバータ名 名前 処理名 カテゴリ
Mapper 変数Mapper 変数代入 基本/処理
ドキュメントMapper マッピング 変換/基本
マージMapper マージ 変換/基本
文字 Character Converter CP932からSJISに変換 変換/文字
SJISからCP932に変換 変換/文字
Ignore Invalid Char Filter 不正なXML文字削除 変換/文字
XSLT XSLT構造変換 変換/XSLT

スクリプトコンポーネント

スクリプトコンポーネントとは、フロー制御やメモなど、スクリプト作成に必要な機能をまとめたコンポーネントです。
デザイナのツールパレット上では「基本」カテゴリに属します。
SkyOnDemandでは、主に以下のようなスクリプトコンポーネントがあります。

サブカテゴリ 説明
処理 外部アプリケーション起動処理や待機処理など
フロー 繰り返し処理や例外監視処理など
その他 グループ処理やメモなど

フロー

スクリプトには、処理の流れを表す「プロセスフロー」と、データの流れを表す「データフロー」があります。プロセスフローとデータフローを総称して「フロー」と呼びます。
SkyOnDemandでは、フローをプロセスフローとデータフローを分離することにより、一度処理した処理結果を後続のコンポーネントで何度も使用することができます。

プロセスフロー

プロセスフローとは、処理の流れを表します。スクリプトはプロセスフローで結ばれた順番に処理されます。
プロセスフローは、「start」コンポーネントから開始され、「end」コンポーネントおよび「break」コンポーネントで終了します。

データフロー

データフローとは、データの流れを表します。
読み取り系アダプタやコンバータから書き込み系アダプタやコンバータにデータフローを引くことができます。

結果データ

コンポーネントの処理結果を「結果データ」と呼びます。
主に読み込み系アダプタとコンバータが結果データを生成します。また、書き込み系アダプタとコンバータは結果データを「入力データ」として扱います。

変数

SkyOnDemandでは、「スクリプト変数」、「コンポーネント変数」、「環境変数」、「トリガー変数」の4種類の変数が用意されています。

名前 使用できるスコープ 説明 スクリプト内での値の変更 入力フィールドの記述方法 使用例 備考
スクリプト変数 スクリプト スクリプト内で使用できる変数です。
ユーザが自由に作成および追加を行うことができます。

(変数Mapperを使用します。)
${スクリプト変数名} ${var}
コンポーネント変数 スクリプト コンポーネント用としてあらかじめ用意されている変数です。
コンポーネントで発生したエラーや、処理したデータの数などを取得することができます。
不可
(コンポーネントの実行時に自動的に設定されます。)
${コンポーネント名.コンポーネント変数名} ${csv_read.count}
  • コンポーネントの実行時にデフォルト値で初期化されます。
  • 詳細については、各アダプタのオペレーションのページを参照してください。
環境変数 SkyOnDemand Server SkyOnDemand Server全体で使用できる変数です。
ユーザが自由に作成および追加を行うことができます。
不可 %{環境変数名} %{DB_HOST}
トリガー変数 トリガー 各トリガー用にあらかじめ用意されている変数です。 不可 ${trigger.トリガー変数名} ${trigger.projectName}
  • 詳細については、「トリガー」および各トリガーガイドを参照してください。

入出力

入出力とは、スクリプトの引数(スクリプト入力変数)と戻り値(スクリプト出力変数)のことです。入出力は、スクリプトで定義されたスクリプト変数に、入出力用の属性を付加することで実現されています。
SkyOnDemandのスクリプトは複数の引数を取ることができ、複数の戻り値を返すことができます。入出力であるスクリプト入力変数、スクリプト出力変数を総称して「入出力インターフェース」と呼びます。

入出力の設定は、スクリプト変数の作成/編集画面およびスクリプトのプロパティの[入出力]タブで行います。

終了ステータス

終了ステータスは、スクリプトが終了した際にスクリプトを実行したツールに返される値です。
詳細については、「終了ステータス」を参照してください。

実行ID

スクリプトは、1スクリプトにつき1つの、SkyOnDemand Server上で一意なIDを割り振られます。これを「実行ID」と呼びます。
実行IDは、ログタスクマネージャでスクリプトを識別する際に必要となります。

実行環境ID(VMID)

実行環境IDとは、SkyOnDemand Server起動時にSkyOnDemand Serverプロセスに対して内部的に割り振られる一意のIDです。
実行環境IDは、SkyOnDemand Serverの設定Mapperロジック実行環境IDexecログでSkyOnDemand Serverプロセスの識別のために使用されます。

ユーザ管理

SkyOnDemandでは、独自のユーザ管理機構を行っています。
ユーザ管理機構は、ユーザとグループという概念で管理します。ユーザやグループの情報をもとに、プロジェクトの作成・編集の切り分け、ファイルアクセスの切り分けなどを行います。
デフォルトでは、管理者であるrootユーザのみが存在しています。 ユーザの管理はコントロールパネルの「
ユーザアカウント」から行うことができます。

ユーザとグループ

ホームディレクトリ

SkyOnDemandユーザは1つのホームディレクトリを持ちます。/home/<ユーザ名>がホームディレクトリとなります。
ホームディレクトリには、各ユーザが作成したプロジェクトが保存されます。

スクリプトの作成と実行

ここからは、デザイナを使用して実際に簡単なスクリプトを作成し、実行する手順を説明します。
既存のCSVファイルの内容を読み取り、別のCSVファイルにその内容を書き込む処理を作成します。

SkyOnDemand Studioを起動しログインする

連携サーバーのStudioログイン画面を表示します。



[ユーザ]に初期設定ユーザである「root」を、[パスワード]にインストール時に指定したパスワードを入力し、[ログイン]ボタンを押下します。
パスワードの変更方法は「ユーザアカウント」を参照してください。

ログインに成功すると、Studioのスタート画面が表示されます。

デザイナを起動する

Studioメニューから[デザイナ]を選択します。



デザイナが起動します。

プロジェクトとスクリプトを作成する

ツールバーの「プロジェクト新規作成」アイコンを押下します。



「新規プロジェクト」画面が開きます。[次へ]ボタンを押下します。



[完了]ボタンを押下します。



作成したプロジェクトとスクリプトがプロジェクトエクスプローラに表示され、スクリプトキャンバスにスクリプトが展開されます。



プロジェクトエクスプローラでは、プロジェクトやスクリプトのさまざまな状態をアイコンで通知します。

アイコン 説明 備考
プロジェクト/スクリプトの更新を表します。
  • スクリプトキャンバスやマッピングキャンバス上のコンポーネントアイコンでも同様に、更新を表します。
  • プロジェクトの保存を行うと表示が消えます。
  • 本アイコンが表示された状態で、プロジェクトの保存を行わずにプロジェクトやデザイナを閉じると、変更された設定は破棄されます。
スクリプトキャンバス上で編集対象(スクリプト内容が表示されている状態)であることを表します。  
プロジェクト/スクリプトのロード中であることを表します。  

入力データを作成する

Studioメニューから[エクスプローラ]を選択し、エクスプローラを起動します。



左ペインのツリーから、「data」ディレクトリを選択します。

右ペインの空白部分の右クリックメニューから[新規作成]-[テキストファイル]を選択します。



作成されたファイルの名前を「inputdata.csv」に変更します。



ファイルをダブルクリックすると、専用のテキストエディタが開きます。



以下の内容を入力し、保存します。

サンプルデータA,100
サンプルデータB,200
サンプルデータC,300

コンポーネントアイコンを配置する

デザイナのツールパレットの「ファイル」カテゴリから、「CSVファイル読み取り」をスクリプトキャンバスにドラッグ&ドロップします。



CSVファイル読み取り処理のプロパティ設定ダイアログが開きます。



[ファイル]入力フィールドに、先ほど作成した入力データの絶対パス「/data/inputdata.csv」を入力します。
[参照]ボタンでファイルチューザを起動し、ファイルを選択することもできます。
[追加]ボタンを押下し、[列名]入力フィールドに「商品名」を入力します。
もう一度[追加]ボタンを押下し、[列名]入力フィールドに「数量」を入力します。



[完了]ボタンを押下してプロパティ設定ダイアログを閉じると、スクリプトキャンバスにコンポーネントアイコンが配置されます。



続いて、デザイナのツールパレットの「ファイル」カテゴリから、「CSVファイル書き込み」をスクリプトキャンバスにドラッグ&ドロップします。



CSVファイル書き込み処理のプロパティ設定ダイアログが開きます。



[ファイル]入力フィールドに「/data/outputdata.csv」を入力し、[完了]ボタンを押下します。

フローを引く

コンポーネントアイコン「csv_read」をマウスでドラッグし、「csv_write」にドロップします。
ドロップ後に表示されるポップアップメニューから、[プロセスフローとデータフローを引く]を選択し[OK]ボタンを押下します。


プロセスフローは、黒色の実線で表示されます。
データフローは、黄色の破線で表示されます。

コンポーネントアイコン「Start」をマウスでドラッグし、「csv_read」にドロップします。
同様に「csv_write」をマウスでドラッグし、「End」にドロップします。



スクリプトの作成が完了しました。

作成したスクリプトを実行する

ツールバーから、[スクリプトの実行]ボタンを押下します。



スクリプトが実行されます。
処理が正常終了すると、「スクリプトの実行」ダイアログが表示されます。



実行履歴ビューには、スクリプトの実行処理時間が表示されます。
デバッグモードで実行した場合は、全体の処理時間のほかに、アイコンごとの処理時間が表示されます。

実行結果を確認する

エクスプローラを開き、「data」ディレクトリに「outputdata.csv」が存在することを確認します。



「outputdata.csv」をダブルクリックし、書き込んだ内容を確認します。



正常に処理が行われたことが確認できました。

作成したスクリプトを保存する

[ファイル]メニューから、[プロジェクトを保存]を選択します。



プロジェクトを保存している最中に、サーバを再起動したり、クライアントとサーバとのネットワークが切断されたりした場合などに、プロジェクトが不正な状態で保存され、再度開くことができなくなることがあります。

以上でプロジェクトの作成、スクリプトの実行から保存までの基本的な操作方法についての説明が終了となります。
実践的な概念や機能については、「サービスの開発」を参照してください。