Oracle BPM バージョン 11.1.1.7。Humantask.task の [Events] タブの [Content Change Callbacks] セクションで、NotesStore と addNote および getNotes メソッドを実装するクラスの完全修飾クラス名を入力しました。
このクラスは AppModule のパブリック メソッドを使用して、カスタム テーブルを使用してコメントを読み書きします。これらのメソッドは、開発中に BC テスターとコールバック クラスの一時的なメインを使用して十分にテストされています。
プロジェクトは jar にコンパイルされ、BPM プロジェクトの SCA-INF/lib フォルダーに配置されます。次に、SCA および関連する ADF ヒューマン タスク フォームがデプロイされます。
プロセス インスタンス中に標準のヒューマン タスク コメント セクションでコメントが作成されると、クラスが呼び出されますが、AppModule が作成される行の getNotes メソッドで例外が発生します。
java.lang.ClassCastException: oracle.jbo.common.ampool.PoolMgr
クラスでは、AppModule は次のように作成されます。
AuditModule service = (AuditModule)Configuration.createRootApplicationModule("com.co.modules.AuditModule", "AuditModuleLocal");
この投稿(最後の回答)で説明されているように、フィルターを使用して web.xml 構成ファイルを SCA BPM プロジェクトに追加しようとしました。これは、ADFコンテキストの初期化のトリガーについて説明していますが、まだエラーが発生しています。
問題は、ヒューマン タスクからのコールバックを使用して、AppModule パブリック メソッドを使用して DB 作業を行うメソッドを呼び出すにはどうすればよいかということです。Oracle のドキュメントは、この分野では非常にまばらです (29.11.1)。
アップデート
スタック トレースは、データ ソース名の検索に問題があり、実際に JBO エラーをスローしていることを示しています。誰かがこれに遭遇した場合は、スタック トレースで他の問題を確認してください。
更新2
最後に、カスタム コメント テーブルにタスク コメントを書き込むためにこれを取得しました。クラスが呼び出されたときに必要な ADF コンテキストを開始する方法がないように見えるため、コメント コールバック クラスで AppModule/Model アプローチを使用することはできないようです。コードで DB に直接アクセスするようにクラスを書き直すことにより、コメント コールバック クラスはテーブルを書き込みます。しかし、この投稿と同じエラーが発生しています。すなわち:
Exception invoking method from XML data control. Cause:oracle.bpel.services.workflow.client.WorkflowServiceClientException: java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
Supplemental Detail java.io.IOException: Error: Unexpected type encountered in writeExternal oracle.bpel.services.workflow.client.WorkflowServiceClientException: java.rmi.UnmarshalException: cannot unmarshaling return; nested exception is:
java.io.IOException: Error: Unexpected type encountered in writeExternal
返されるタイプはすべてフレームワークに返される NotesStore 実装からのものであるため、これは Oracle フレームワークの問題であると思われます。
public class CommentsCallback implements NotesStore, Serializable...
public List<CommentType> getNotes(Task task)
誰かがこれを解決しましたか?完全なスタック トレース: