Ofbizプロジェクトベースの学習 - 概要段階 - サービスが返す結果

成功への復帰

次のように1、.DispatcherReturnDemoServiceクラスの[サービス] returnSuccessの調製は、読み取ります。

/ ** 
     *成功した結果を返します
     * @param DCTX 
     * @paramコンテキスト
     * @return 
     * / 
	パブリック静的地図<文字列、オブジェクト> returnSuccess(DispatchContext DCTX、地図<文字列、オブジェクト>コンテキスト){		 
           
		//コード実行サービスを埋めます
		/ / ...... 
		文字メッセージ=「成功実装」; 
		
		//成功した場合、プログラムが実行されると、結果が成功セット戻り
		地図の<string、オブジェクト> = ReturnMapUtil.getSuccessMap結果を(); 
		result.put(「メッセージ」、メッセージ); 
		戻り値の結果;		 
}

サービスに処方するこれらの2つの方法でservices_dispatcher_return_demo.xml servicedefフォルダ内の2、

	<サービス名= "returnSuccess"エンジン= "javaの" 
		場所= "DispatcherReturnDemoService"を呼び出す= "returnSuccess"> 
		<属性名= "RETURNCODE"タイプ= "マップ"モード= "OUT"オプション= "真" /> 
	</サービス>

第二に、障害が返されます

1、失敗の結果が返されます

1.1 returnError] [DispatcherReturnDemoServiceクラスのサービスを書いて、次のように、読み取ります。

/ ** 
     *失敗した結果を返します
     * @param DCTX 
     * @paramコンテキスト
     * @return 
     * / 
	パブリック静的地図<文字列、オブジェクト> returnError(DispatchContext DCTX、地図<文字列、オブジェクト>コンテキストは){ 
		
           
		//コード実行サービスを埋めます
		/ / ....... 
		文字列メッセージは= "失敗"; 
		ブール= ErrorFlagをtrueに; 
		
		//結果を返す
		地図<文字列、オブジェクト>結果= NULL; 
		IF(ErrorFlagを){ 
			//プログラムが失敗、成功を返します。結果セット
			結果= ReturnMapUtil.getErrorMap(「のerrorCode」) ; //のerrorCode ここで特定のエラーコードとの交換が必要
			result.put(「メッセージ」メッセージ); 
		}他{ 
			正常に実行されたとき//プログラムは、成功を返します結果セット
			結果= ReturnMapUtil.getSuccessMap(); 
		戻り値の結果; 
			result.put( "メッセージ"、メッセージ)。
		}
		
}

これらの2つの方法で1.2 services_dispatcher_return_demo.xml servicedefフォルダは、サービス中に処方します

	<サービス名= "returnError"エンジン= "javaの" 
		場所= "DispatcherReturnDemoService"を呼び出す= "returnError"> 
		<属性名= "RETURNCODE"タイプ= "マップ"モード= "OUT"オプション= "真" /> 
	</サービス>

2、内部サービスが返された結果を有効にする方法の例外をキャッチするために失敗した後

次のように2.1 DispatcherReturnDemoService書き込みクラスのサービスは、[catchError]、読み取ります。

/ ** 
     *異常な結果を取得
     * @param DCTX 
     * @paramコンテキスト
     * @return 
     * / 
	パブリック静的地図<文字列、オブジェクト> catchError(DispatchContext DCTX、地図<文字列、オブジェクト>コンテキストは){ 
		
		//するためにコード実行サービスに記入
		してみてください{ 
			//コードの実行がバック投げた場合を想定した、我々は例外をキャッチする必要が
			INT 8 =;は、
			INT B = 0; 
			のI / Bを= int型; 
			
		}キャッチ(例外E){ 
			//置くエラーがエラー情報は、ログファイルレベルに出力され
			、Debug.logError(E、Module1の)
			指定されたエラーコードに対応する説明情報、サービス呼び出し元に返さ// 
			;戻りReturnMapUtil.getErrorMap(DemoErrorMapping.BASE0000)
		} 
		プログラムが実行されたとき//失敗した場合、結果セットが正常に返さ
		;)(ReturnMapUtil.getSuccessMapを返します
		
}

これらの2つの方法で2.2 services_dispatcher_return_demo.xml servicedefフォルダは、サービス中に処方します

	<サービス名= "catchError"エンジン= "javaの"場所= "DispatcherReturnDemoService"を呼び出す= "catchError"> 
		<属性名= "RETURNCODE"タイプ= "マップ"モード= "OUT"オプション= "真" /> 
	</サービス>

3、サービスが正常に実行される方法を決定するために、サービスを呼び出した後

次のようにDispatcherReturnDemoServiceクラスのサービス[checkResult]で3.1書き込みは、読み取ります。

/ ** 
     *どのようにサービスが正常に実行されたかどうかを判断するために、サービスを呼び出した後
     * @param DCTX 
     * @paramコンテキスト
     * @return 
     * / 
	{パブリック静的地図<文字列、オブジェクト> checkResult(DispatchContext DCTX、地図<文字列、オブジェクト>コンテキスト)
		
         
        //サービスエンジンを取得
		LocalDispatcherディスパッチャ= dctx.getDispatcher(); 
		
		
		// ..... 
		//他のコード
		// .......は
		
		//サービスを呼び出し
		、地図<文字列、オブジェクト>出力は= nullを
		試し{ 
			マップの<string、オブジェクト> = FastMap.newInstance INPUT()
			;出力= dispatcher.runSync( "returnSuccess"、INPUT)	 
		}キャッチ(例外E){ 
			ログファイルに印刷エラー情報を入れる//エラーレベル
			デバッグ。 logError(例えば、モジュール)。 
			//指定されたエラーコードに対応する説明情報は、サービス呼び出し側に返さ
			ReturnMapUtil.getErrorMapリターン(DemoErrorMapping.BASE0000); 
		} 
		//サービスが直接バックアッパー呼び出し元に誤った結果を入れ、正常に実装されていない場合、正常に実行されているかどうかをチェックし
		(!ServiceUtil.isSuccess(出力))IFは{ 
			出力を返します; 
		} 
		// ... 
		//その他のコード
		// ....... 
		
		@プログラムが正常に実行された場合、成功リターン結果セット
		(ReturnMapUtil.getSuccessMapを返します);	 
}

これらの2つの方法で3.2 services_dispatcher_return_demo.xml servicedefフォルダは、サービス中に処方します

	<サービス名= "returnError"エンジン= "javaの"場所= "DispatcherReturnDemoService"を呼び出す= "returnError"> 
		<属性名= "RETURNCODE"タイプ= "マップ"モード= "OUT"オプション= "真" /> 
	</サービス>

ビジネス例外にサービスターンの失敗の結果を返す方法4は、スローすることができます

クラスメソッドで記述された4.1 DispatcherReturnDemoService [checkResult]、次のように読み取ります。 

/ ** 
     *サービスの失敗の結果は、ビジネス例外に変身返しをスローすることができるか(これが唯一の方法ではなく、サービスである)
     * @param DCTX 
     * @paramコンテキスト
     * @return 
     * / 
	パブリック静的な無効returnInMethod(LocalDispatcherディスパッチャ)BusinessException {スロー
		
		// ..... 
		//他のコード
		// ....... 
		
		//コールサービス
		、地図<文字列、オブジェクト>出力= nullを
		試し{ 
			地図<文字列、オブジェクト> = fastmap INPUTが。 newInstance(); 
			出力= dispatcher.runSync( "returnSuccess"、INPUT);	 
		}キャッチ(例外E){ 
			ログファイルに印刷エラー情報を入れる//エラーレベル
			Debug.logError(E、Module1の); 
			//を入れ例外型指定された型に変わり、そして投げる
			スロー新しい新BusinessException(E、DemoErrorMapping.BASE0000を); 
		}
		//サービスは、正常に実行されています正常に実装されていない場合、結果がスロービジネス例外クラスにターンを返されているかどうかをチェックし
		(!ServiceUtil.isSuccess(出力)){IF 
			スロー新しい新BusinessException(出力); 
		} 
		
		// .... 。
		//他のコード
		// ....... 
}

  

 

  

 

おすすめ

転載: www.cnblogs.com/gzhcsu/p/11202619.html