Oracle BPM версии 11.1.1.7. В Humantask.task, вкладка Events, раздел Content Change Callbacks, я ввел полное имя класса, который реализует NotesStore и методы addNote и getNotes.
Класс использует общедоступные методы в AppModule для написания и чтения комментариев с использованием нашей пользовательской таблицы, и эти методы были хорошо протестированы во время разработки с использованием тестера BC и временного основного в классе обратного вызова.
Проект компилируется в jar-файл и помещается в папку SCA-INF/lib проекта BPM, затем развертываются SCA и соответствующие формы неавтоматизированных задач ADF.
Когда комментарий делается в разделе готовых комментариев к неавтоматизированной задаче во время экземпляра процесса, вызывается класс, но возникает исключение в методе getNotes в строке, в которой создается AppModule:
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 для работы с БД? Документация Oracle очень скудна в этой области ( 29.11.1).
ОБНОВЛЕНИЕ
Оказывается, трассировка стека показывает, что у него проблемы с поиском имени источника данных, и на самом деле выдает ошибку JBO. Если кто-то столкнется с этим, проверьте трассировку стека на наличие других проблем.
ОБНОВЛЕНИЕ 2
Наконец-то получил это, чтобы записать комментарии к задаче в пользовательскую таблицу комментариев. Оказывается, невозможно использовать подход AppModule/Model в классе обратного вызова комментариев, поскольку не представляется возможным инициировать необходимый контекст ADF при вызове класса. Переписывая класс для доступа к БД непосредственно в коде, класс обратного вызова комментариев действительно записывает таблицу. Но я получаю ту же ошибку, что и в этом сообщении. А именно:
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
Я подозреваю, что это проблема с инфраструктурой Oracle, поскольку возвращаемые типы относятся к реализации NotesStore, и все они передаются обратно в инфраструктуру:
public class CommentsCallback implements NotesStore, Serializable...
public List<CommentType> getNotes(Task task)
Кто-нибудь решил это? Полная трассировка стека по адресу: