2014-12-05 7 views
0

Oracle BPM Version 11.1.1.7. На вкладке «Humantask.task», «События», «Изменение обратных звонков», я ввел полное имя класса, которое реализует NotesStore и методы addNote и getNotes.Oracle BPM Human Task Комментарии Ошибки обратного вызова при активации приложения AppModule в вызываемом классе

Класс использует общедоступные методы в AppModule для записи и чтения комментариев с использованием нашей настраиваемой таблицы, и эти методы были хорошо протестированы во время разработки с использованием тестера BC и временной основной в классе обратного вызова.

Проект скомпилирован в банку и помещен в папку 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 с фильтром как discussed in this post (последний ответ). В этом обсуждается инициирование инициализации контекста ADF, но я все еще получаю ошибку.

Вопрос в том, как я могу использовать обратный вызов из человеческой задачи для вызова метода, который использует общедоступные методы AppModule для работы БД? Oracle's documentation очень редкий в этой области (29.11.1).

UPDATE

Оказывается, что трассировка стека показывает, что она имеет проблемы поиска имени источника данных и фактически бросает ошибку JBO. Если кто-то работает с этим, проверьте трассировку стека для других проблем.

UPDATE2

Наконец получил это писать комментарии задачи в таблицу пользовательских комментариев. Оказывается, не представляется возможным использовать подход AppModule/Model в классе обратного вызова комментариев, поскольку нет способа инициировать необходимый контекст ADF при вызове класса. Переписывая класс для доступа к БД непосредственно в коде, класс обратного вызова комментариев пишет таблицу. Но, я получаю ту же ошибку, что и this post. А именно:

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) 

Кто-нибудь решил эту проблему? Полный StackTrace по адресу:

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

ответ

0

После обсуждения с Oracle, ключ к избежать неожиданной ошибки типа является использование ObjectFactory для заполнения объекта комментарийВведите.Хотя в конечном итоге мы использовали другой подход, приведенный ниже код был предоставлен 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...