Oracle BPM Human Комментарий комментирует ошибки обратного вызова при создании AppModule в вызываемом классе

Oracle BPM Версия 11.1.1.7. В Humantask.task, вкладка Events, раздел Callbacks Change Content, я ввел полное имя класса, который реализует 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. Если кто-то сталкивается с этим, проверьте трассировку стека для других проблем.

UPDATE2

Наконец получил это, чтобы написать комментарии к задаче в таблице пользовательских комментариев. Оказывается, не представляется возможным использовать подход 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)

Кто-нибудь решил это? Полная трассировка стека в:

https://community.oracle.com/thread/3638940

1 ответ

Решение

После обсуждения с Oracle ключом к предотвращению непредвиденной ошибки типа является использование ObjectFactory для заполнения объекта CommentType. Хотя в конечном итоге мы выбрали другой подход, приведенный ниже код был предоставлен Oracle в качестве примера и может помочь кому-то, пытающемуся сделать это:

import oracle.bpel.services.workflow.task.model.ObjectFactory; 
import oracle.bpel.services.workflow.task.model.CommentType; 
import oracle.bpel.services.workflow.task.model.IdentityType; 

...

ObjectFactory factory = new ObjectFactory() 

CommentType commentType = factory.createCommentType(); 

IdentityType updatedBy = factory.createIdentityType(); 
updatedBy.setId("some user"); 
updatedBy.setType(IWorkflowConstants.IDENTITY_TYPE_USER); 
updatedBy.setDisplayName("some user display name"); 

commentType.setUpdatedBy(updatedBy); 
commentType.setComment("some comment"); 

...set the rest of the comment fields as necessary... 
Другие вопросы по тегам