はじめに
こんにちは!
セゾンテクノロジー1年目の佐野です。
今携わっているPJで、弊社の製品である「DataSpider Servista」を使うことが多いのですが、実際使ってみて初めて知る仕様などもあり勉強の毎日です。
そこで備忘録としての目的で、アウトプットを全世界に発信させていただきます。どうかお付き合いください。
自己満足の備忘録ということで、「DataSpider Servista」(以下DSS)についての用語の説明は割愛させていただきます
また、素人の目線が多分に含まれておりますのでご容赦ください
APIが動かない
なぜかAPIが実行できない!パスもリクエストもレスポンスもちゃんと設定できている。なのになぜか「入力がない」とエラーが出てしまう!
と、お困りのそこのあなた。スクリプト上も、一見問題ないように見えるでしょう。しかし何をどういじっても、入力がないと言われてしまう。
まず理解しておかねばならないのは、APIアイコンはマッピングからのデータフローがないと動かない、ということです。原因として、APIのコンポーネント処理が一個前のコンポーネントのデータ出力をトリガーにしているからなんじゃないかと推測されます。
つまり、APIの前に必ずマッピングアイコンを配置する必要がある、という設計です。したがって、リクエストのBodyの値を設定する必要がないAPIだったとしても、空のマッピングアイコンを配置し、データフローを引かなければいけないのです。
図のように、APIのアイコンはデータフロー(黄色い→)に囲まれている必要がある
しかし、空のマッピングアイコンをスクリプトに置いておくことは危険です。なぜなら、傍から見ればそのアイコンは何の仕事もしていないから。きちんと上記の仕様を同PJメンバーに共有しておかなければ、最適化のために削除されてしまうかもしれない。それどころか、普通にド忘れして「なんだこれ」とか言いながら自分で消してしまうかも。
そこで、【空のマッピングアイコンを配置する方法】以外の方法をお伝えします。
ダミー変数を用意する
こちらをご覧ください。
マッピングアイコンを用いることなく、データフローを引くことに成功しています。無論、startアイコンは何のデータも出力していないので、データのフローがあるというのは極めて不自然な形です。それでは、なぜこんなことが可能なのか?
やったことはたった一つです。XML型のスクリプト入力変数を一つ用意すること。これをするだけでstartから直接データフローが引けるようになります。
結局、仕事をしていないコンポーネントの代わりに仕事をしていない変数を用意しちゃっていますが、スクリプト上の見た目がすっきりしました。また、変数なら相談なくいきなり消される可能性も低いので、精神衛生的にもよろしい。
ダミー変数を用いるデメリット
残念ながら、この方法にはデメリットが存在します。このやり方を実行する場合、用意したXML型の変数には何かしらの値を入れておく必要があります。
しかし、スクリプト入力変数は初期値を設定できないので、外部から値を入力する必要があります。呼び出し元のスクリプトで不必要な処理を生んでしまっているため、結果的にリスキーになってしまっているのです。まさに本末転倒。
結局どうすればいいのか
結論を申し上げますと、マッピングアイコンからデータフローを引くのが一番確実です。
ただし、空のマッピングアイコンだと消されてしまうリスクがあるので、このコンポーネントで何かしらの代入処理をしておくとよいでしょう。本来はこの後行う予定だった変数の代入を、先にやってしまうとか。それなら消されません。
おわりに
今回の記事はここで終わりです。
あくまで一発屋の小ネタといった感じですが、枯れ木も山の賑わいということで、このチリツモライフハックを皆さんの頭の片隅に置いてやってください。
それでは。




