LoginSignup
2
1

More than 3 years have passed since last update.

Automation Anywhere A2019 でDLLをロジックとして使う (※ただし文字列型引数に日本語文字があると現状NG)

Last updated at Posted at 2020-03-08

概要

前のバージョンであるv11では、ロボットの部品を作成するのにMetaBotという仕組みがありましたが、A2019では廃止され、代わりにいくつかの代替手段が用意されています。MetaBotの中でDLLを呼んでいたものについては、A2019のTaskBotから直接DLLを呼べる「DLL」パッケージが用意されましたので、今回はこれを使ってDLLのロジックをA2019でも活用してみたいと思います。

利用環境

  • Automation Anywhere A2019.10 (ビルド2545)
  • Microsoft Visual Studio Community 2019 v16.4.5 (.NET Framework 4.7.2) - DLL開発環境

DLL の準備

準備するDLLは『Automation AnywhereでMetaBotを作成する』の記事で扱ったものです。一応、念のため繰り返し記載します。

DLLは.NET プログラミング言語 (C#) で開発したもののみがサポートされます。以下の手順に従って、Visual Studioで作成します。

  1. Visual Studio Community 2019を開き、「新しいプロジェクトの作成」で「DLL」と検索して「クラスライブラリ (.NET Framework)」(C#) を選び、新しいプロジェクトを作成開始します。
    image.png
  2. プロジェクト名/ソリューション名「JapaneseLibrary」で新規作成すると、IDEが開きます。
    image.png
  3. IDEの「プロジェクト」-「参照の追加」で「Microsoft.VisualBasic」を追加します。
    image.png

Class1.csをJpnLib.csに名前を変更して、以下の内容にします。

JpnLib.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;

namespace JapaneseLibrary
{
    public class BotMthods
    {
        public String HiraganaToKatakana(String inputString)
        {
            return Strings.StrConv(inputString,VbStrConv.Katakana);
        }
        public String KatakanaToHiragana(String inputString)
        {
            return Strings.StrConv(inputString, VbStrConv.Hiragana);
        }
    }
}

4.ソリューションをビルドしてJapaneseLibrary.dllを作成します。

A2019でDLLパッケージを使う

さて、用意したDLLをA2019から呼び出すBotを作成しましょう。A2019でBotを新規作成したら、アクションパレットで「DLL」パッケージを探してみましょう。中にはOpen、Run Function、Closeの3つのアクションが含まれていますので、それぞれをドラッグ&ドロップして、以下の画像のようにOpen、Run Function、Closeの順番で配置します。
image.png

あらかじめディクショナリ変数を以下のように用意しておきます。(関数に渡す引数として使います)

  • 名前: Arguments
  • タイプ: ディクショナリ
  • サブタイプ: 任意
  • 1つ目の要素
    • タイプ: 文字列
    • キー: inputString
    • 値: あいうえおアイウエオ本日は晴天ナリ image.png

それぞれのアクションには次の値をフィールドに入れていきます。

DLL: Open
image.png
"File path"は「参照」ボタンをクリックして、表示されるダイアログボックスで「ファイルをアップロード」を選択、ローカルPCからJapaneseLibrary.dllをアップロードします。DLLは常にControl Roomのリポジトリに格納され、必要に応じて再度ローカルPCにダウンロードして利用されます。
image.png

DLL: Run Function
DLLの中のnamespace名、class名、関数名、引数を格納しているディクショナリ型変数 ($Arguments$)および出力の格納先変数 (文字列: $prompt-assignment$)を指定します。
image.png

注: v11の時のようにDLLを指定して中に格納されているnamespace一覧、class一覧、関数一覧を見る機能がA2019だとありません。これらの名前はあらかじめ入手しておく必要があります。既存のMetaBotの中に入っているDLLでこれらが不明なものは、v11の環境があればMetaBot Designerで一度覗いてみて確認する必要がありそうです。

DLL: Close
image.png
特に変更する必要はありません。

アクションリストの最後に、結果が格納された変数$prompt-assignment$を表示するメッセージボックスアクションを挿入して完成です。

実行結果

返された文字列は日本語がおかしな感じになっていました...「bot error」という文字列になることもありました。
image.png

メモ: いろいろとデバッグをしていると、inputStringに日本語文字を代入する場合に結果がエラーになったりおかしな文字列を返すことがわかりました。たとえばHiraganaToKatakanaの関数の中の

return Strings.StrConv(inputString,VbStrConv.Katakana);

return Strings.StrConv(inputString,VbStrConv.Katakana).ToUpper;

に変更してビルドしたDLLを使った場合、inputStringに半角英数字のみの「abcde」などを入力すると正しく「ABCDE」と帰ってきます。このことからDLLパッケージの現時点でのバグとして、入力用引数に日本語文字を設定した場合に正しく引き渡されないというものがあると思われます。ただ、日本語文字が絡まなければ現時点でもきちんと動作するようです。

まとめ

いかがでしたでしょうか。A2019では直接DLLの中の関数を呼べるようになったので、必要なロジックをDLLに外出しにしてC#で開発することも可能です。(ただし現時点では日本語文字を扱えないバグがありますが)

それではまた!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1