Technical information

Kompiraの機能 Pythonで記述された処理をKompiraから呼び出す

Kompiraのジョブフローはssh接続した上でのシェルコマンド実行や、メールの送受信など、運用フローを考える上で頻出する処理が書きやすいように作られています。しかし、実際の運用現場で行われる処理は多様です。ExcelやCSVファイルを読み書きしたい場面があるかもしれません。MySQLやOracle DBなど、RDBMSにアクセスしたいこともあるでしょう。
このようにKompiraの標準機能として用意されていない要素を扱いたい場合は、Pythonのプログラムで機能を実装し、それをKompiraのジョブフローから呼び出す、という方法があります。

本記事ではPythonの言語仕様の詳細には触れず、若干の基礎知識は持っている前提です。必要に応じて専門書やサイトなどを参照してください。

 
Pythonプログラムについて

Pythonの構文として、ここではdefとimportの2つについて簡単に説明をします。

まずdefは、Pythonで関数を定義するための構文となります。

これは消費税額を計算する単純なスクリプトです。ここではdef文を用いて関数salestax()を定義しています。

ここでsalestax()を利用して税込価格(priceincludingtax)を計算するのは次の様にします。

次に、importはPythonライブラリの読み込みを行うための構文です。
Pythonには標準、サードパーティー含め、豊富なライブラリが用意されています。特にデータ加工や、外部システムと通信するためのAPIライブラリがPythonで提供されているケースも多くみられます。

例:MySQLのドライバを利用してレコードを追加

 
ジョブフローからPythonスクリプトを呼び出す

まずは「ライブラリ」オブジェクトを作成します。ここでは「extlib」という名前で作成します。

ライブラリ・オブジェクト

編集画面で以下のスクリプトを記述して保存します。split()はPythonの文字列を単語に分解する関数です。

ライブラリ・オブジェクト

結果、次の様な画面になります。ここで「FUNCTIONS」の欄に salestax(x)とsplit(x)が表示されます。これがジョブフローから利用できる関数になります。

ライブラリ・オブジェクト
これで定義した関数を利用してみましょう。

ここでは新しくジョブフロー「ライブラリ利用」を作成してみます。

これを実行すると以下のような結果が得られます。

Kompiraの標準ライブラリでは文字列処理の関数はあまり多くありませんが、split()以外にもfind()などの文字列検索や、reモジュールを呼び出して正規表現によるパターン検索なども行えます。

ここで注意するのが引数の与え方です。( )の中に記述せず、Kompiraの外部ジョブフローを呼び出すときのように”:”の後に記載します。

NGの例

このようにKompira本体の機能で不足する場合は、Pythonの豊富な機能を利用する事が出来ます。特に外部システムと連携したいとき、Pythonライブラリが提供されている場合には積極的に利用してみましょう。