UiPathメモ(その３)～ライブラリについて～

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

##ライブラリの作り方
ライブラリは自作のアクティビティをたくさん入れた箱です。
作り方は２種類あります。

###作り方１
こっちが主な作り方。多分こっちを想像してると思います。
こちらの方が作り方としては楽です。
ただし、使ったアクティビティのバージョンを意識する必要があるかもしれません。
https://mag.sweeep.ai/rpa/uipath_library/
https://docs.uipath.com/studio/lang-ja/docs/about-libraries

###作り方２
こっちは「カスタムアクティビティ」ともいうみたい。。。
Visial Studioでブリブリ、プログラムを作って、アクティビティにしたい人向けです。
なので、こっちは、どうしてもこれでしか作れやんときだけでええと思いますが。。。
バージョンの依存関係を考慮しなくていいというメリットがあります。
https://qiita.com/masatomix/items/1f63513e80313a99faeb

####参考
https://docs.uipath.com/studio/lang-ja/docs/about-automation-projects

##ライブラリのバージョンアップについて
ライブラリを改修することは、これからもずっとやっていくと思います。
具合の悪い改修をすると、バージョンアップしたワークフロー側で**えらいことになります。**
しかも、ライブラリは、みんなで共有して使うものなので、**バージョンアップした途端**、動かなくなるロボットがあっちゃこっちゃで発生して**大炎上となります。**
なので。。。慎重に作らなあきません。
しでかしそうなパターンをいくつか検証してみました。

####条件
わたしのUiPathは以下のを使ってます
UiPath Studio Community Edition 2020.4.3

####**パターン１**：**ライブラリ内の「アクティビティ名の末尾に全角数字入れたら」ダメ！！**
・ライブラリを作った。たまたま、アクティビティ名(xamlファイル名)に**２**(全角の２)を含めてた。セーブ、パブリッシュ等は問題なかった。
・ワークフロー側で上のライブラリをインストールした。問題はなかった。
・ワークフロー側のデザインパネルに問題となるアクティビティをドラッグアンドドロップ。この時点で問題はなかった。
・実際にロボットを動作させてみた。問題なく動作した。
・**問題なく動作したのでワークフローをセーブした。問題発生！！（下のエラーが出た。）**

下の例では「待ち行列取得**２**」という名前のアクティビティ。
![ライブラリ名前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/db1036e6-61c6-9e17-e70a-1939eb94a6d3.png)
**（結論）**イマイチ理由が分からないが、**ライブラリ内のアクティビティ名(xamlファイル名)に全角数字を入れやん方が良さそう**
**（対処）**ファイル名に全角数字使わないようにしたらエラー発生しなくなった。
![名前変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/4444ea67-ae27-7669-754f-a7b8ace8fdef.png)
上の名前にした。


####**パターン２**：**ライブラリ内の「アクティビティ名をむやみに変更」するのはダメ！！**
・初めて作ったワークフローにライブラリをインストール、アクティビティをドラッグアンドドロップ、保存。
・ライブラリ内の`アクティビティの名前を変更`してみた。ライブラリを保存、パブリッシュ。
・ワークフロー側に上のパブリッシュしたライブラリを**インストール。問題発生！！（下のエラーが出た。）**
![インストール後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/553153b3-27c3-1374-6a4f-4a8209feb2ff.png)
**（結論）**ライブラリ内で名前が変更されているのでワークフロー内の元のアクティビティでエラーが出た。参照するアクティビティがライブラリにないため。
**（対処）**ライブラリ側のアクティビティ名を元に戻してください。もしくは、ライブラリのバージョンを元に戻す。（ロールバック、ダウングレード）

####**パターン３**：**ライブラリ内のアクティビティの「出力引数の数を増やしても」問題なかった**
・初めて作ったワークフローにライブラリをインストール、アクティビティをドラッグアンドドロップ、保存。
・ライブラリ内の`アクティビティの出力引数の数を増やしてみた`。ライブラリを保存、パブリッシュ。
・ワークフロー側に上のパブリッシュしたライブラリを**インストール。**

出力引数を**１個**から
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/a4e49b1b-e584-e78c-0dfe-2f1676c12727.png)

このように出力引数を**２個**に増やした。（[DTのカラム数]という引数を増やした。）
![test1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/027383ab-762e-9d6f-2b51-617dc1ec59b7.png)
**（結論）**問題なくインストールできた。無論、ワークフロー側は元々存在しないデータなので上のように[DTのカラム数]は空白
$~~~~~~~~~~~~~~$になります。
　　　　使うときゃ、当たり前ですが、この空白にデータ名を入れる必要があります。
　　　　　　

####**パターン４**：**ライブラリ内のアクティビティの「出力引数の型を変更」するのはダメ！！**
・初めて作ったワークフローにライブラリをインストール、アクティビティをドラッグアンドドロップ、保存。
・ライブラリ内の`アクティビティの出力引数の型を変更してみた`。ライブラリを保存、パブリッシュ。
・ワークフロー側に上のパブリッシュしたライブラリを**インストール。問題発生！！（以下のエラーが出た。）**

下のように出力引数の型を**int**から
![test2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/6923574c-a214-68fa-2e01-61cdbdac02b8.png)
下のように出力引数の型を**string**に変更
![test1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/51013a38-914c-64a8-d871-1a1a87f2e39e.png)
ワークフロー側は、変更したライブラリをインストールすると以下のようなエラーが出ます。
![test3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/626bc9ee-9461-3232-15ea-6f83c5f77af1.png)
![test5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/6dddcbc2-3337-ee37-c674-9b2a3232bed6.png)
**（結論）**ワークフロー側でよくある型間違いのエラーが出ます。
**（対処）**ライブラリー側の出力引数の型を元に戻してください。もしくは、ライブラリのバージョンを元に戻す。（ロールバック、ダウングレード）
　　　　　　または、ワークフロー側の型を変更する。

####**パターン５**：**ライブラリ内のアクティビティの「出力引数名を変更」するのはダメ！！**
・初めて作ったワークフローにライブラリをインストール、アクティビティをドラッグアンドドロップ、保存。
・ライブラリ内の`アクティビティの出力引数名を変更してみた`。ライブラリを保存、パブリッシュ。
・ワークフロー側に上のパブリッシュしたライブラリを**インストール。問題発生！！（下のエラーが出た。）**
![インストール後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/553153b3-27c3-1374-6a4f-4a8209feb2ff.png)
![test6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691463/30a6a2a1-d600-d723-c577-95002b5ab9fb.png)
**（結論）**ライブラリ内のアクティビティで出力引数名が変更されているのでワークフロー内の元のアクティビティでエラーが出た。
　　　　　　参照する出力引数名がライブラリ内のアクティビティにないため。
**（対処）**ライブラリ側のアクティビティの出力引数名を元に戻してください。もしくは、ライブラリのバージョンを元に戻す。（ロールバック、ダウングレード）