cancel
Showing results for 
Search instead for 
Did you mean: 

jBPM customization and custom workflow deployment

dbz
Champ on-the-rise
Champ on-the-rise
Aaaaahhhhh…  Smiley Sad

Hello, guys and girls.
Please, help me with this issue.

I have a workflow that deploys correctly and works fine. BUT.
I need to use mail nodes and mail actions that come up with jPLD 3.2.
So.
I modified my processdefinition.xml to correspond jPDL 3.2 version as shown below:

<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="scwf:publishwhitepaper">‍

and added mail action to one of events:

…<mail name="mailtest" to="#{notificationRecipient}">  <subject>Hello, #{notificationRecipient}</subject>  <text>Dear #{notificationRecipient}, please, do not reply to this message.</text></mail>…‍‍‍‍‍‍‍‍

This is just a test…
Okay, now because jBPM engine will send e-mails, I need to setup SMTP rules.

I looked into XMLs in ../WEB-INF/classes/alfresco folder and found that workflow-context.xml contains the following:

<!–                     –><!– jBPM Implementation –><!–                     –><bean id="jbpm_configuration" class="org.alfresco.repo.workflow.jbpm.AlfrescoJbpmConfigurationFactoryBean">    <property name="sessionFactory" ref="sessionFactory"/>    <property name="configuration" value="classpath:org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml"/></bean>‍‍‍‍‍‍‍‍‍‍

Well, I created package ../WEB-INF/classes/org/alfresco/repo/workflow/jbpm and put jbpm.cfg.xml into this folder. It contains only the following:

<jbpm-configuration>  <string name="jbpm.mail.smtp.host" value="localhost" />  <string name="jbpm.mail.port" value="9025" /></jbpm-configuration>‍‍‍‍‍

Well, everything looks great and I'm starting Alfresco…

And have this:

11:22:05,933 ERROR [org.springframework.web.context.ContextLoader] Context initialization failedorg.alfresco.error.AlfrescoRuntimeException: Workflow deployment failed   at org.alfresco.repo.workflow.WorkflowDeployer.init(WorkflowDeployer.java:324)   at org.alfresco.repo.workflow.WorkflowDeployer$1.doWork(WorkflowDeployer.java:431)   at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:437)   at org.alfresco.repo.workflow.WorkflowDeployer.onBootstrap(WorkflowDeployer.java:427)   at org.alfresco.util.AbstractLifecycleBean.onApplicationEvent(AbstractLifecycleBean.java:62)   at org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:77)   at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)   at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:75)   at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:246)   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:355)   at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)   at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)   at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)   at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)   at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)   at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)   at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)   at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)   at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:830)   at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:719)   at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)   at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)   at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)   at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)   at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)   at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)   at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)   at org.apache.catalina.core.StandardService.start(StandardService.java:516)   at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)   at org.apache.catalina.startup.Catalina.start(Catalina.java:578)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   at java.lang.reflect.Method.invoke(Method.java:585)   at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)   at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: org.springframework.orm.hibernate3.HibernateSystemException: instance not of expected entity type: org.jbpm.graph.node.Join is not a: org.jbpm.graph.def.Node; nested exception is org.hibernate.HibernateException: instance not of expected entity type: org.jbpm.graph.node.Join is not a: org.jbpm.graph.def.Node   at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659)   at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:377)   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)   at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)   at org.alfresco.repo.workflow.jbpm.JBPMEngine.deployDefinition(JBPMEngine.java:307)   at org.alfresco.repo.workflow.WorkflowServiceImpl.deployDefinition(WorkflowServiceImpl.java:174)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   at java.lang.reflect.Method.invoke(Method.java:585)   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)   at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:275)   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)   at $Proxy51.deployDefinition(Unknown Source)   at org.alfresco.repo.workflow.WorkflowDeployer.init(WorkflowDeployer.java:294)   … 36 moreCaused by: org.hibernate.HibernateException: instance not of expected entity type: org.jbpm.graph.node.Join is not a: org.jbpm.graph.def.Node   at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassEntityPersister(AbstractEntityPersister.java:3640)   at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1347)   at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:180)   at org.hibernate.engine.ForeignKeys$Nullifier.isNullifiable(ForeignKeys.java:137)   at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:69)   at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:47)   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:288)   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)   at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)   at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)   at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)   at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)   at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)   at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)   at org.hibernate.engine.Cascade.cascade(Cascade.java:130)   at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:334)   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:94)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)   at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)   at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)   at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:218)   at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)   at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:296)   at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242)   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219)   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)   at org.hibernate.engine.Cascade.cascade(Cascade.java:130)   at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:334)   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)   at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)   at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)   at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)   at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)   at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)   at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   at java.lang.reflect.Method.invoke(Method.java:585)   at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1202)   at $Proxy70.save(Unknown Source)   at org.jbpm.db.GraphSession.deployProcessDefinition(GraphSession.java:77)   at org.jbpm.JbpmContext.deployProcessDefinition(JbpmContext.java:173)   at org.alfresco.repo.workflow.jbpm.JBPMEngine$1.doInJbpm(JBPMEngine.java:315)   at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)   … 59 more‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

How changing version from 3.1 to 3.2 may cause this:
instance not of expected entity type: org.jbpm.graph.node.Join is not a: org.jbpm.graph.def.Node   ???


What I done wrong? What should I do to make this working?
Please, help ASAP.

Thank you very much!
4 REPLIES 4

manish17
Champ in-the-making
Champ in-the-making
Did you achieve that mail stuff in alfresco. If yes, please let me know how it would possible to send a custom email.

Manish

sethatrothbury
Champ in-the-making
Champ in-the-making
Post your process definition. From the limited error that you posted, it looks like you tried using a fork and join but didn't use the correct syntax in the join node.

On a slightly more related topic, why don't you just use the mail action instead of trying to change the jpdl version?

manish17
Champ in-the-making
Champ in-the-making
Thankx for ur response.

I am not using Fork and Join nodes in my workflow. I need to know how to create a custom class for sending emails and where I need to specify my custom class in the Task node. So that I can receive emails based on my custom SMTP Configurations.

cheffilet
Champ in-the-making
Champ in-the-making
I need to know how to create a custom class for sending emails and where I need to specify my custom class in the Task node. So that I can receive emails based on my custom SMTP Configurations.

Did you ever tried to obtain this information with usage of JBPMConfiguration?

Within a valid JBPMContext (e.g. a JBPM-Action), you should try something like this:
String mailHost = JBPMConfiguration.Configs.getString("jbpm.mail.smtp.host");‍