UiPathメモ（その４）～Terminal アクティビティについて～

UiPathについて備忘録をつらつらと。。。
痛い目に会うたところとか気になったところ挙げていきます。

今回はTerminalアクティビティについてです。
**えっれ～～～苦労したので(はげしく強調)**メモっときます。
**多分半年くらい試行錯誤してました。(はげしく強調)**
世間にほとんど情報なかった。（泣）

##AS400とは
古き良き昭和のレガシーシステム。。。
ERPです。。。
こんなやつ
![test1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/0c5bd732-a7ac-3508-96c7-614c7d385418.png)

いろんな会社でまだまだ現役バリバリだそうです。

参考URL:[AS400についてわかりやすく説明したサイト](https://www.imagazine.co.jp/imagazine-7071/)

##Terminalアクティビティとは
UiPathとAS400を連携させるアクティビティです。
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/ae4a7445-3380-c8fb-8ca4-c1605ec7b973.png)
AS400と連携させるのに**絶対必要です。**
なので、インストールしてみましょう。

##Terminalアクティビティのインストール
赤のとこ押す
![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/490c1854-a3e1-86ed-6e38-67d7930ed0c0.png)
こんなん出ます
![test4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/370ac77e-7c0b-4837-79e6-2d0533af4bf5.png)
赤丸が検索窓なので、ここに[terminal]と入れちゃってください
![test5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/15c122d7-dfe4-0be5-d3fc-2101e3d5ae12.png)
赤丸押したら矢印のところが出てきます。この例はすでにインストール済みなので更新になっちゃってます。
初めてインストールする際は、青丸の周辺に[インストール]ボタンが出るので押しちゃってください。
![test6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/517cd070-2dbf-0133-81e9-db8ed7cbc274.png)
##Terminalアクティビティのセッティング([ターミナルセッション]のセッティング)
[ターミナルセッション]のセッティングをここから述べます。ここが一番難儀するとこです。
あくまで一例なので、皆さんの環境にあったセッティングを模索してみてください。

まず、赤丸部を押下
![テスト1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/c714c1d6-1162-ce5d-e041-b2fb103bc229.png)
こんな画面が出てきます
![テスト2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/7683a174-93c7-c3a4-e88e-a96a79bb0788.png)
赤丸部にプルダウンメニュー変更(今回の例ではIBM Personal Communicationsです)
![テスト3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/9fdc09a9-947f-b9ef-ca16-e8212c3e01f8.png)
次からは赤丸部にプロファイルをセットします。
![テスト4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/581de64f-5780-f212-4907-6b490bac0f2b.png)
このアイコンを右クリックで[プロパティ]をえらんじゃってください。
![テスト5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/23c8a232-1339-2b08-bfb1-7936f85fd514.png)
[プロパティ]をえらぶと以下の画面が出てきます。
赤丸部のリンクをコピー。（ファイルの拡張子は"ws"です。）
![テスト6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/7c244661-23da-831e-ceb2-0c164772b26c.png)
赤丸部を押下
![テスト7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/b8fda64a-1e35-0b5e-0b55-fa5701216d02.png)
こんな画面が出ます。
![テスト8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/3edfedda-c026-64df-1b8e-d87f10fd5295.png)
赤丸部に上でコピーしたリンクをペーストします。（ダブルコーテイションがくっ付いてくるけど、削除してね！！）
![テスト9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/39f5b142-6924-a383-6fd1-8cac863fa27f.png)
開くボタンを押下すると設定完了です！！














##Terminalアクティビティを使うコツ
AS400での処理は、おおむね[ログイン]、[画面移動]、[やりたい処理]、[AS400を閉じる]に分けられると思います。
###ログイン
こんな感じです。まず最初に、デザインパネルに[ターミナルセッション]をドラッグアンドドロップ。[実行]の中にやりたい操作を入れていきます。
[ターミナルセッション]なしに何も処理はできません。AS400で行う処理はすべて[ターミナルセッション]の"実行"に入れる必要があります。
![test1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/a0eaad50-9c52-7792-6572-8a72bd1ad09e.png)
ログインは、人がやると[ログイン名入力] => [tabキー押下] => [パスワード入力] => [Cntrlキー押下]です。
これを、UiPathにさせるには上のように[キーを送信]、[コントロールキーを送信]を使います。
####ここまでの注意点
AS400とUiPathの連携を行うには、下の赤丸部のプロパティが非常に重要です。適切にセットする必要があるので注意しちゃってください。
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/47007308-b771-29e6-38ed-681bce1d658a.png)
ご自身で作っているプロセス内で初めて[ターミナルセッション]を使う(ドラッグアンドドロップした)場合は、赤丸部の`プロパティ[接続文字列]`を自分でセットする必要があります。このデータは端末によって異なってきます。
つまり、PCによって異なるので`my初期設定ファイルにあらかじめ用意して`ロボット起動時に読み込ませると便利です。
`プロパティ[出力接続]`は、自分でセットする必要はありません。データ名(メモリ)さえ用意しとけば[ターミナルセッション]が勝手に入れてくれます。
ここで重要なのは、以降のAS400内の処理で`プロパティ[出力接続]`を使っていくということです。(`継承していく`といった感じのイメージ)
詳しくは、以降を読み進めてください。

###画面移動
以下が画面移動のシーケンスです。ここでは、シナリオはどーでもいいです。
![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/179353fc-8b3a-b1ca-2391-ed1ae238bd67.png)
重要なのは[ターミナルセッション]のプロパティです。（赤丸のとこ）
(水色のエラー表示は気にせんといてw)
![test5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/84f026ee-e995-2944-89ba-97ddb0be3164.png)
先のログインで[ターミナルセッション]を使いましたが、そこで出力させた`プロパティ[出力接続]`のデータを`プロパティ[既存の接続]`で使い回します。
ちなみに処理がこの後も続くときは、`プロパティ[接続を閉じる]`のチェックを外しましょう。

###最後に
ここまでで[ログイン]、[画面移動]のシーケンスをわざわざ２つに分けてシナリオを作りました。
ご想像の通り、１つのシーケンスにすることもできます。（というか、最初は私も１つのシーケンスにしてました。）
ただ、１つのシーケンスにすると[ターミナルセッション]内がバカでかくなってシナリオの**可読性**が非常に悪くなります。（[ターミナルセッション]の"実行"が大きくなる。）
**再利用性**という意味では最悪です。
こういった問題点を避けるために、`プロパティ[出力接続]`と`プロパティ[既存の接続]`をうまく使っちゃってください。
**処理を細かく分けることができます。**
すなわち、**部品化しやすくなる**ってことです。