IntelliJ でのカスタム パッケージの構築

Java IntelliJ を使用して、Automation 360Control Room にパッケージとしてアップロードできる JAR ファイルを作成してコンパイルします。

前提条件

アクション パッケージをビルドするには、JDK と Java IntelliJ の基本的な理解が必要です。以下のソフトウェアとファイルがインストールされていることを確認してください。

手順

  1. Automation Anywhere パッケージ SDK の最新リリースをダウンロードします。パッケージ SDK の最新リリースについては、以前のパッケージ SDK リリース ノート を参照してください。
  2. SDK パッケージを任意のローカル ディレクトリに解凍します。
  3. A360-package-sdk-<version number> から MetricToImperial にフォルダー名を変更します。
  4. IntelliJ IDEA で、[ファイル] > [開く] に移動し、C:\<SavedLocation>\MetricToImperial でプロジェクトを開きます。
    IntelliJ ファイルを開く
  5. プロジェクト ルート内の settings.gradle ファイルを開きます。rootProject.name = 'MetricToImperial' を設定します
    settings.gradle プロジェクト名
  6. [src] > [メイン] > [リソース] > [パッケージ テンプレート] にある package.template ファイルを開きます。
  7. パッケージ名を A360DemoPackage から MetricToImperial に変更します。
    Package.Template の名前フィールドの名前を変更する
    IntelliJ で [同期] ボタンをクリックすると、プロジェクトが更新されます。
  8. [locales json] でパッケージ名を更新します。[src] > [メイン] > [リソース] > [ロケール] > [en_US.json] に移動します。
    1. [en_US.json] ファイルを開き、[必須] ラベルフィールドを A360DemoPackage から MetricToImperial に更新します。オプションの説明を更新します。
    2. [en_US.json] ファイルの残りの行をすべて削除します。
  9. サンプルパッケージを削除し、[src] > [メイン] > [java] > [com.automationanyhwere.botcommand] に移動し、samples.commands を削除して、サンプルパッケージを削除します。
  10. 新しいパッケージを作成し、java フォルダーを右クリックして、[新規] > [パッケージ] を選択します。新しいパッケージ名に「metrictoimperial.commands」と入力します。
  11. 新しい [Java クラス] を作成し、metrictoimperial.commands パッケージを右クリックして、[新規] > [Java クラス] の順に選択します。新しいクラスの名前 CMtoINCH: を入力します。
    1. [CMtoINCH] クラスを開きます。次のコードをコピーしてクラス定義ステートメントの上に貼り付けます。
      import static com.automationanywhere.commandsdk.model.DataType.NUMBER;
      //BotCommand makes a class eligible for being considered as an action.
      @BotCommand
      //CommandPks adds required information to be dispalable on GUI.
      @CommandPkg(
              //Unique name inside a package and label to display.
              name = "CMtoInch", label = "[[CMtoINCH.label]]",
              node_label = "[[CMtoINCH.node_label]]",  description = "[[CMtoINCH.description]]", icon = "ruler_icon.svg",
              //Return type information. return_type ensures only the right kind of variable is provided on the UI.
              return_label = "[[CMtoINCH.return_label]]", return_type = NUMBER, return_required = true)
    2. [CMtoINCH] クラス内で、次のコードをコピーして貼り付けます。
    //Identify the entry point for the action. Returns a Value<String> because the return type is String.
    @Execute
    public NumberValue action(
            //Idx 1 would be displayed first, with a text box for entering the value.
            @Idx(index = "1", type = AttributeType.NUMBER)
            //UI labels.
            @Pkg(label = "[[CMtoINCH.CMInput.label]]")
            //Ensure that a validation error is thrown when the value is null.
            @NotEmpty
                    Double CMInput) {
        //Internal validation, to disallow empty inputs. No null check needed as we have NotEmpty on CMInput.
        if ("".equals(CMInput.toString().trim()))
            throw new BotCommandException("Input of CM is required");
        Number result;
        try {
            //Conversion logic
            result = CMInput * 0.393701;
        } catch (Exception e) {
            //Throw custom error message
            throw new BotCommandException("Unable to convert " + CMInput.toString() + "cm to inches");
        }
        //Return NumberValue.
        return new NumberValue(result);
        }
    namespaces をインポートするには、ハイライトされた赤い表記をクリックし、ALT+ENTER キーを押して、[インポート] を選択します。これにより、注釈と datatypes に基づいて namespaces が自動的にインポートされます。
    CMtoINCH Java クラス
  12. [en_US.json] ファイルを構成し、[src] > [メイン] > [リソース] > [ロケール] > [en_US.json] に移動して、ラベルと説明の値の後に次のフィールドを追加します。
    "CMtoINCH.label" : "cm to inches",
    "CMtoINCH.node_label": "cm to inches",
    "CMtoINCH.description" : "Convert centimeters to inches",
    "CMtoINCH.return_label" : "Assign the Output in Inches to a Number Variable",
    "CMtoINCH.CMInput.label" : "Centimeters to Convert to Inches"

    en_US.json を設定する
  13. CommandPkg 注釈を更新します。Github からアイコンをダウンロードします。
    1. ruler_icon.svggithub からダウンロードし、画像を右クリックして、その画像を ruler_icon.svg として保存します。
    2. iconwhite.svggithub からダウンロードし、画像を右クリックして、iconwhite.svg の画像を保存します。
    3. 両方のファイルを [src] > [メイン] > [リソース] > [アイコン] フォルダーにコピーします。
      Pod 用アイコン
  14. プロジェクト ルート内の build.gradle を開きます。依存関係セクションの後、最後の終了タグの前に、次のコードをコピーして貼り付けます。
    test {
       testLogging {
          exceptionFormat = 'full'
       }
       useTestNG() {}
    
       afterSuite { desc, result ->
          if (!desc.parent)
             println("${result.resultType} " +
                   "(${result.testCount} tests, " +
                   "${result.successfulTestCount} successes, " +
                   "${result.failedTestCount} failures, " +
                   "${result.skippedTestCount} skipped)")
       }
       maxHeapSize "3g"
    }
  15. バージョン番号を更新し、プロジェクトに必要でない依存関係を build.gradle から削除します。
  16. 新しいディレクトリを作成し、[src] を右クリックして、[新規] > [ディレクトリ] を選択します。
    1. [Name (名前)] フィールドに「test\java」を入力するか、[Gradle ソース セット] から [test\java] の提案を選択します。
    2. 新しいパッケージを作成し、java ディレクトリを右クリックして、[新規] > [パッケージ] を選択します。
    3. 新しく作成したパッケージの名前を入力します。metrictoimperial.commands
  17. 新しい Java クラスを作成し、右クリックして [新規] > [Java クラス] を選択します。新しいクラスの名前 CMtoINCHTest を入力します。
    CMtoINCHTest 内で、次のコードをコピーして貼り付けます。
    @Test
    public void testCMtoINCH(){
        Double validInput = 10.00;
        Double expectedOutput = 0.393701 * validInput;
        CMtoINCH testCM = new CMtoINCH();
        Value<Double> result = testCM.action(validInput);
        Assert.assertEquals(result.get(), expectedOutput);
    }

    CMtoINCHTest クラス
  18. プロジェクトの [ファイル] > [すべて保存] を選択して保存します。
  19. パッケージをビルドします。
    IntelliJ UI またはコマンド ラインを使用できます。コマンド ラインを使用している場合、
    1. ターミナル ウィンドウを開いて、MetricToImperial ディレクトリに移動します。
    2. プロジェクトをビルドするには、次のコマンドを入力します。gradlew.bat clean build shadowJar
    ビルドに成功しました」というメッセージが表示されます。

    既存のファイルを自動的に削除できなかったためにビルドが失敗し、クリーンのタスクの実行に失敗したことを示すシステム メッセージが表示されることがあります。この場合は、explorer windows を閉じて、ビルドを再度実行します。

次のステップ

カスタム パッケージを Control Room に追加