0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

iDempiere(JPiere)の画面からのプロセス起動

Last updated at Posted at 2023-11-20

前回は、iDempiere(JPiere)に装備されいるSOAP機能を使用してプロセスを起動しました。
今回は、iDempiereの画面から実装したプロセスを起動したいと思います。

プロセス起動までの設定および実装手順

画面からプロセス起動するにあたり、iDempiere画面からのメニュー登録設定とjavaコードによる実装を行います。
画面からプロセスを起動するシナリオは、以下の通り。
iDempiere画面のリンクをクリックすると、入力項目が表示されます。入力後、さらにユーザからの入力を受け付けるポップアップ画面が表示され、そこで入力した値を受け取り画面に入力値を表示して処理終了するというものです。

iDempiere設定画面のメニュー登録

iDempiereのメニューにPopupWindowCalcProcessというリンクを追加します。

設定結果

メニューに登録した結果の状態を以下に示します。
画面上部アイコンをクリックすると、PopupWindowCalcProcessが表示されます。
このリンクにCalcProcessを紐づける設定を行います。
image.png

以下に、設定手順を説明します。

メニュー登録

メニューにCalcProcessを登録します。

  • ログイン
    メニューの設定を行うにあたり、ログインユーザはSystem Administratorとしてログインします。
    Tenant: System
    Role: System Administrator
    image.png

  • メニューの追加
    System Administratorでログイン後、左メニューにMenuが表示されます。
    Menuをクリックし新規ボタンをクリックします。
    入力欄に以下を設定します。
    Name: PopupWindowCalcProcess
    Description: PopupWindowCalcProcess
    Action: Process
    Process: CalcProcess_CalcProcess
    image.png
    上記内容を入力後、保存ボタンをクリックし情報を登録します。

メニューへの追加作業は以上です。
一度ログアウトし再度ログインします。

画面メニューを設定するにあたり、前回までの手順でProcessにCalcProcess(Process: CalcProcess_CalcProcess)が登録されている前提となります。

ポップアップを表示する実装

画面メニューからプロセス実行時、ユーザからの入力を受け付ける画面をポップアップとして表示する実装を行います。
ポップアップ表示の実装は、CalcProcessクラスに実装します。
※ 前回実装したCalcProcessをさらに修正します。

修正前のソースコード

前回までの実装により、フォルダ構成およびソースコードは以下の状態になっていると思います。
image.png

CalcProcess.java

	@Override
	protected String doIt() throws Exception {

        /* 
        * 以下は前回までの実装内容です
        * 今回はこの部分にコードを記述していきます
        */
		log.warning("[x] doIt method.");
		
		log.warning(value1 != null ? " [-] argValue1: " + value1 : "argValue1 NULL");
		log.warning(value2 != null ? " [-] argValue2: " + value2 : "argValue2 NULL");
		
		return "Post values SUCCESS!";
	}

今回の修正は、CalcProcessクラスのdoIt()メソッド(CalcProcess.java)にコードを追加していきます。

doItメソッドの修正結果


	@Override
	protected String doIt() throws Exception {
		
		log.warning("[x] doIt method.");

        /* ポップアップ画面から入力された値を格納するバッファを用意します */
		final StringBuilder customValue1 = new StringBuilder();
		final StringBuilder customValue2 = new StringBuilder();
		
		/* 1つ目の画面を表示します。ここで入力された値をcustomValue1バッファに格納します */
		processUI.askForInput("Please enter a Value for customValue1.", new Callback<String>() {
			@Override
			public void onCallback(String result) {
				customValue1.append(result);
			}
		});
		/* customValue1に値が入力されるまでポップアップ画面を表示したままにします */
		while (customValue1.length() == 0) {
		  try {
            /* ユーザからの入力を認識させるため少し処理を待機させます */
		    Thread.sleep(200);
		  } catch (InterruptedException e) {}
		}


		/* 2つ目の画面を表示します。ここで入力された値をcustomValue2バッファに格納します */
		processUI.askForInput("Please enter a Value for customValue2.", new Callback<String>() {
			@Override
			public void onCallback(String result) {
				customValue2.append(result);
			}
		});
        /* customValue2に値が入力されるまでポップアップ画面を表示したままにします */
		while (customValue2.length() == 0) {
		  try {
		    Thread.sleep(200);
		  } catch (InterruptedException e) {}
		}
  
        /* 
        * argValueとcustomValueの値をそれぞれ画面に表示します。
        */
		addLog("Assumed Input Items argValue1 : " + value1);
		addLog("Assumed Input Items argValue2 : " + value2);
		addLog("Dynamic Input Items customValue1 : " + customValue1.toString());
		addLog("Dynamic Input Items customValue2 : " + customValue2.toString());
		
		return "Your input values.";
	}

実装は以上です。

以上で、画面の設定およびソースコードの修正が完了しましたので、iDempiereサービスを再起動します。

動作確認

ログイン

サービス再起動後、GardenWorld Adminでログインします。
Tenant: GardenWorld
Role: GardenWorld Admin
image.png

メニューの表示内容確認

メニューアイコンをクリックすると一覧にPopupWindowCalcProcessが表示されます。
image.png

プロセスの実行

上記メニューからPopupWindowCalcProcessをクリックします。

値の入力画面

  • Process登録時の2項目の入力
    入力画面が表示されます。ここで表示される項目は、CalcProcessをProcessに登録時に設定した2項目です。
    ※ SOAPのリクエストから受け付けるargValue1およびargValue2を登録したため、その2項目が最初の画面に表示されます。
    値を入力後、OKボタンをクリックします。
    image.png

  • ポップアップ項目
    OKボタンをクリック後、1つ目のポップアップが表示されます。
    123を入力しチェックボタンをクリックします。
    image.png

つづいて、2つ目のポップアップが表示されます。
456を入力しチェックボタンをクリックします。
image.png

入力値の表示結果

入力した値が内容がaddLog関数により画面上に表示されることが確認できます。
image.png

メニューからの起動と動作確認は以上です。

次回は

今回は、プロセスとして実装した処理を画面のメニューから起動してみました。
次回は、ログイン認証(OpenLDAPを認証サーバに使用する)について検証したいと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?