Blog 

El Blog

de Lucasian Labs

$ echo How to add comments automatically (programatically) in Oracle BPM 11g

18 Julio 2013 Escrito por 
Publicado en Colaboraciones
Recently we had a requirement to add comments automatically to a task based on some data
condition present in the payload, this should be carry out before the task moves to the next
step in the flow so this is possible to do through ADF.

1. In the task details page you can define an action listener in the action button responsible

for finishing the task like the following:

 ...

 

<af:commandtoolbarbutton action="#{invokeActionBean.invokeOperation}"
actionlistener="#{pageFlowScope.DigitalizacionBean.validateSubmit}"
disabled="#{!bindings.ACEPTAR.enabled}" id="ctb1" partialsubmit="false"
text="#{wf:getResourceValue('ACEPTAR', 'bindings.customActions')}"
visible="#{wf:isCustomActionAvailable('ACEPTAR', 'bindings.customActions')}">
<f:attribute name="DC_OPERATION_BINDING" value="bindings.ACEPTAR"></f:attribute>
</af:commandtoolbarbutton>

 

here the method validateSubmit() from the managed bean DigitalizacionBean is called when the

action button is clicked.

2. Then you need to register the managed bean through the xml taskflow file with the appropriate

scope which in this case is pageFlow.


$ echo How to add comments automatically (programatically) in Oracle BPM 11g

3. Next you need to know the binding action of the user comment iterator, like in the following image:


$ echo How to add comments automatically (programatically) in Oracle BPM 11g

This is the source view of the jsp file the interesting part is bindings.CreateInsert.execute.

 

<af:toolbar visible="#{actionAvailable.isCommentUpdatable}" id="t1">
<af:commandimagelink id="adCmtBt" partialsubmit="true"
actionlistener="#{bindings.CreateInsert.execute}"
action="#{popupBean.showCommentDialog}"
shortdesc="#{resources.CREATE}"
hovericon="/hw_images/new_ovr.png"
visible="#{actionAvailable.isCommentUpdatable}"
icon="/hw_images/new_ena.png"
disabledicon="/hw_images/new_dis.png"
depressedicon="/hw_images/new_dwn.png">
</af:commandimagelink>
</af:toolbar>

 

4. Finally you can code the logic in the validateSubmit() method like the following:

 

private AttributeBinding getAtributo(String nombre) {
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
AttributeBinding attribute = (AttributeBinding) bindings.getControlBinding(nombre);
return attribute;
}

public void validateSubmit(ActionEvent actionEvent) {
FacesContext facesCtx = FacesContext.getCurrentInstance();
//Agregar Nota si cambio el número de facturas y modificar el valor correspondiente
if (getActualNumeroFacturas() !=

getMaximoNumeroFacturas()/*Cualquier condición de Negocio*/) {
ELContext elCtx = facesCtx.getELContext();
ExpressionFactory elFctry = facesCtx.getApplication().getExpressionFactory();
MethodExpression methodExpr = elFctry.createMethodExpression(elCtx,
"#{bindings.CreateInsert.execute}", null, new Class[]{});
methodExpr.invoke(elCtx, null);
getAtributo("comment").setInputValue("Mi comentario automático");
getAtributo("commentScope").setInputValue("BPM");
methodExpr.invoke(elCtx, null);
}
InvokeActionBean invokeActionBean = (InvokeActionBean) facesCtx.getELContext().
getELResolver().getValue(facesCtx.getELContext(), null, "invokeActionBean");
invokeActionBean.setOperation(actionEvent);
}

 

Happy Hacking!
Valora este artículo
(1 Voto)
Carlos Navarrete

Soy arquitecto de sistemas y líder de proyectos Java con amplia experiencia en el campo, muy apasionado por la tecnología y adicto al trabajo. 

 

Artículos relacionados (por etiqueta)

  • $ echo Como obtener las Extended User Properties definidas en Oracle BPM 11g desde una clase helper Java

    In Oracle BPM 11g es posible obtener los valores de las propiedades de usuario extendidas definidas en el workspace de Oracle.

    Las extended user properties son útiles para asignar propiedades extra a los usuarios del dominio de seguridad SOA las cuales no pueden ser definidas directamente en el LDAP (ya sea por alguna restricción de negocio o técnica), dichas propiedades se definen desde el workspace:

    Digiriéndose hacia Administration ->  Extended User Properties

    Como se muestra en la siguiente imagen al usuario carlos se le asigna la región NORTE como propiedad de usuario extendida, estas propiedades pueden manipularse desde el flujo BPMN generalmente cuando se hace uso de los roles paramétricos para asignación de tareas, sin embargo también es posible extraerlas consultando al Workflow Engine.

    $ echo Como obtener las Extended User Properties definidas en Oracle BPM 11g desde una clase helper Java
    $ echo Como obtener las Extended User Properties definidas en Oracle BPM 11g desde una clase helper Java
    El siguiente código muestra la obtención de la propiedad REGION:
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import oracle.bpel.services.bpm.common.IBPMContext;
    import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;
    import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;
    import oracle.bpm.client.BPMServiceClientFactory;
    import oracle.bpm.services.client.IBPMServiceClient;
    import oracle.bpm.services.organization.IBPMOrganizationService;
    import oracle.bpm.services.organization.model.Participant;
    import oracle.bpm.services.organization.model.ParticipantProperty;
    
    public class BPMHelper{
    
        BPMServiceClientFactory bpmServiceClientFactory = null;
        IBPMContext bpmContext = null;
        List<Participant> resultado=null;
    
        public static void main (String[] args){
            BPMHelper bpmHelper = new BPMHelper();
    
            // Buscamos a los usuarios de la región NORTE
            List<Participant> participants= bpmHelper.getUsuarios("NORTE");
    
            // Iteramos la lista de resultados
            for (Participant participant: participants){
                System.out.println("Usuarios: " + participant.getValue().getName());
            }
        }
        
        public List<Participant> getUsuarios(String region){
    
            try{
    
                Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> properties = new HashMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String>();
                properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.CLIENT_TYPE, WorkflowServiceClientFactory.REMOTE_CLIENT);
    
                // URL de acuerdo al ambiente
                properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://localhost:8001");
                properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
                
                // Crear un BPM Service Client Factory
                bpmServiceClientFactory = BPMServiceClientFactory.getInstance(properties, null, null);
    
                // Autenticar al usuario Administrador del dominio
                bpmContext = bpmServiceClientFactory.getBPMUserAuthenticationService().authenticate("weblogic", "welcome1".toCharArray(), null);
    
                // Obtenemos el BPM Service Client
                IBPMServiceClient bpmServiceClient = bpmServiceClientFactory.getBPMServiceClient();
    
                // Obtenemos el  BPM Organization Service
                IBPMOrganizationService bpmOrganizationService=bpmServiceClient.getBPMOrganizationService();
    
                // Creamos la lista de participantes con la propiedad que nos interesa
                List<ParticipantProperty> userProperties = new ArrayList<ParticipantProperty>();
                ParticipantProperty participantProperty=new ParticipantProperty();
                participantProperty.setName("REGION");
                participantProperty.getValue().add(region);
                userProperties.add(participantProperty);
    
                // Obtenemos la lista de usuarios con dicha propiedad
                resultado =bpmOrganizationService.getParticipantsWithProperties(bpmContext, null, userProperties, 0, 10000);
    
            }catch(Exception exception){
                    // Manejar la excepción
                }
    
            // Cerrar conexiones
            finally{
                    if (bpmServiceClientFactory != null && bpmContext != null) {
                        try {
                            bpmServiceClientFactory.getBPMUserAuthenticationService().destroyBPMContext(bpmContext);
                        }
                        catch (Exception exception) {
                            // Manejar la excepción
                        }
                    }
                }
            return resultado;
        }
    }
    
    
    El resultado obtenido:
    $ echo Como obtener las Extended User Properties definidas en Oracle BPM 11g desde una clase helper Java

    Happy Hacking!
  • $ echo How to solve the too many open files problem

    I received this exception while configuring Oracle BPM but other tools or products could present a similar problem (Oracle Enterprise Manager Grid Console for example) followed by other exceptions.

    So the steps to verify are:

    1. ulimit -a shows the actual configuration for resource limits (if the number is small maybe you need to increase it), it is posible to alter the configuration by setting ulimit -n number or ulimit -n unlimited (for unlimited resources) and for doing this change permanent you need to edit the appropiate configuration file depending of the operating system.

    2. Weblogic Server limits the number of open file descriptors in the commEnv.sh to 1024 so you need to manually alter this default configuration if that does not meet your requirements:

     


    $ echo How to solve the too many open files problem

    Happy Hacking!

  • $ echo How to Configure Oracle BPM 11g with OpenLDAP

    So once OpenLDAP is installed in your system you need to configure the files olcDatabase={1}bdb.ldif and olcDatabase={2}monitor.ldif and create the appropriate structure, you could do it with .ldif files, a GUI client or command line. Next we proceed with the weblogic configuration, in the console select the section Security Realms this is where we are going to create the new provider of type OpenLDAPAuthenticator and next the following configurations must be applied in the section provider specific (the host and port should point to the OpenLDAP Server that is listening).


    Section Users:
    $ echo How to Configure Oracle BPM 11g with OpenLDAP


    User Base DN: the location where the users are in the ldap structure for example: ou=personas,dc=my-domain,dc=com

    All Users Filter: search filter for all users in ldap for example: (&(uid=*)(objectclass=person))

    User From Name Filter: search filter for a particular user based on the uid for example: (&(uid=%u)(objectclass=person))

    User Name Attribute: should be uid (this is important and the creation of users in the ldap should consider this attribute) in the following image the user carlos is created with all that objectClass types, the password is encrypted with SHA and the manager attribute is useful for creating hierarchies in the organization and from the BPM you could use it for some operations with the provided Identity Service Functions (getManager and getReportees) or with a custom xpath library implementing the IXPathFunction interface.

    $ echo How to Configure Oracle BPM 11g with OpenLDAP

    User Object Class: the most generic objectClass of the users.


    Section Groups:
    $ echo How to Configure Oracle BPM 11g with OpenLDAP

    Group Base DN: the location where the groups are in the ldap structure for example: ou=permisos,dc=my-domain,dc=com

    All groups Filter: search filter for all groups in ldap for example: (&(cn=*)(objectclass=groupofuniquenames))

    Group From Name Filter:  search filter for a particular group based on the common name for example: (&(cn=%g)(objectclass=groupofuniquenames))


    Section Static Groups:
    $ echo How to Configure Oracle BPM 11g with OpenLDAP

    Static Group Name Attribute: the ldap attribute that specifies the name of the group for example: cn

    Static Group Object Class: the objectClass name that stores the ldap groups for example: groupofuniquenames

    Static Member DN Attribute:the attribute that specifies the DNs of the members in that group for example: uniqueMember

    Static Group DNs from Member DN Filter:  search filter that returns the groups of a member based on its DN for example: (&(uniqueMember=%M)(objectclass=groupofuniquenames))

    Next in the common tab the Control Flag parameter should be SUFFICIENT for both the OpenLDAPAuthenticator and the DefaultAuthenticator, finally it is necessary reorder the providers in the realm so that OpenLDAPAuthenticator is in first place and after the DefaultAuthenticator.
    $ echo How to Configure Oracle BPM 11g with OpenLDAP
    So now you can log in into Weblogic console and Enterprise Manager console using weblogic as Administrator user like before but you need to configure in OpenLDAP the Administrators group and put whatever user you want to use as a member of the Administrators group  in order to log in into bpm workspace as an admin user.
    $ echo How to Configure Oracle BPM 11g with OpenLDAP

    And that's all now you can use your configured users and roles (groups) in OpenLDAP for interacting with Oracle BPM.

    I faced a problem when sending emails from notification in the human task (when you use direct address) resulting in two types of errors arriving to the e-mail account:

    ----------------------------------------------------------------------
    Error 500--Internal Server Error
    ----------------------------------------------------------------------

    javax.servlet.ServletException: javax.servlet.ServletException: java.security.PrivilegedActionException: oracle.security.jps.internal.api.jaas.AssertionException: javax.security.auth.login.FailedLoginException: [Security:090304]Authentication Failed: User workflowsystem javax.security.auth.login.LoginException: [Security:090300]Identity Assertion Failed: User workflowsystem does not exist at oracle.bpel.services.workflow.client.worklist.util.WorkflowFilter.doFilter(WorkflowFilter.java:257) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.bpel.services.workflow.client.worklist.util.DisableUrlSessionFilter.doFilter(DisableUrlSessionFilter.java:70) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524) at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:253) at oracle.bpel.services.workflow.client.worklist.servlet.SecureNotificationServlet.service(SecureNotificationServlet.java:178) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442) at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)

    ----------------------------------------------------------------------

    javax.servlet.ServletException: javax.servlet.ServletException: java.security.PrivilegedActionException: oracle.security.jps.internal.api.jaas.AssertionException: javax.security.auth.login.LoginException at oracle.bpel.services.workflow.client.worklist.util.WorkflowFilter.doFilter(WorkflowFilter.java:257) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.bpel.services.workflow.client.worklist.util.DisableUrlSessionFilter.doFilter(DisableUrlSessionFilter.java:70) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:524) at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:253) at oracle.bpel.services.workflow.client.worklist.servlet.SecureNotificationServlet.service(SecureNotificationServlet.java:178) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) at java.security.AccessController.doPrivileged(Native Method) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442) at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    ----------------------------------------------------------------------


    The first thing is to ensure that the recipient is the correct one (in my case the e-mail addresses are obtained from xpath expression).
    $ echo How to Configure Oracle BPM 11g with OpenLDAP

    the solution for error 500 was creating the user workflowsystem and adding it as a member of Administrators group (in OpenLDAP of course) after restarting the servers now is working (even with custom email page from ADF UI) maybe this is a problem with BPM, I don't think the integration with OpenLDAP is causing this issue.


    Happy Hacking!
  • $ echo How to mavenize a BPM project in Oracle BPM 11g
    So this is going to cover the process of building and deploying the SCA composite and the ADF UIs of the
    project also we are going to replace the hostname and port that will be used in the UIs with the file hwtaskflow.xml.
    • The first step is to install to your local maven repository (or your Jenkins maven repository if are using Continous Integration) the Weblogic Maven Plug-In for deployment here more Info.
    • The second step is to create a new Deployment Profile from the project on Jdeveloper so in                                                                               Application Properties -> Deployment select New... -> Archive Type: EAR File and give a name to the profile. 
    $ echo How to mavenize a BPM project in Oracle BPM 11g

    Next in the properties section select Application Assembly and in the Java EE Modules select all the UI projects you have for your bpm project (only the UI projects not the SAR project file).

     

    $ echo How to mavenize a BPM project in Oracle BPM 11g
    • Finally for the third step the following pom.xml does the work you only need to configure the variables section according to your environment configuration for this to work it is needed to have installed Jdeveloper (I think you can reduce the number of variables and improve some things if you want to =)).

     

    4.0.0com.example.bpmdespliegue-artefactos-bpm1.0-SNAPSHOT/opt/svn/192.168.1.11018001weblogicpasswordt3://192.168.1.110:17001trunk/codigo/
    ExampleApp/ExampleApp.jwstrunk/codigo/ExampleApp/MyAppBPMtrunk/codigo/ExampleApp/MyAppBPM/deploytrunk/codigo/ExampleApp/deploy/
    MyApp.earMyAppMyAppBPM1/opt/Oracle/JDMiddleware/jdeveloper/jdev/bin/ojdeploy/opt/Oracle/WLS1035/modules/org.apache.ant_1.7.1/
    bin/ant/opt/Oracle/WLS1035/Oracle_SOA1/bin/ant-sca-package.xml/opt/Oracle/WLS1035/Oracle_SOA1/bin/
    ant-sca-deploy.xmlcom.google.code.maven-replacer-pluginreplacer1.5.1/opt/svn/trunk/codigo/ExampleAPP/falseReemplazar-Hwtaskflowscompile**/
    adfmsrc/hwtaskflow.xml<hostName>.*</hostName><hostName>${host}</hostName><httpPort>.*</httpPort><httpPort>
    ${port}</httpPort>replaceorg.codehaus.mojoexec-maven-plugin1.2.1Empaquetar-Ojdeploy-UIprepare-package
    ${jdeveloper_bin}-workspace${proyecto_svn}/${proyecto_jws}-profile${perfil}-cleanexecEmpaquetar-SCA-BPMprepare-package${ant_bin}-
    f${ant_sca_package}package-DcompositeDir=${proyecto_svn}/${proyecto_bpm}-DcompositeName=${nombre_proyecto_bpm}-Drevision=$
    {revision_proyecto_bpm}execDesplegar-SCA-BPMinstall${ant_bin}-f${ant_sca_deploy}deploy-DserverURL=http://${host}:${port}
    /soa-infra/deployer-Duser=${soa_usuario}-Dpassword=${soa_password}-DsarLocation=${proyecto_svn}/${sar}/
    sca_MyAppBPM_rev${revision_proyecto_bpm}.jar-Dpartition=default-Doverwrite=true-DforceDefault=trueexeccom.oracle.weblogicweblogic-
    maven-plugin10.3.4Desplegar-Ojdeploy-UIinstall${admin_url}${soa_usuario}${soa_password}truedeployfalsetruesoa_server1
    ${proyecto_svn}/${ear}
    ${perfil}deploy

     

    So now you can run mvn install =) or once you have set up your job with jenkins !build 'MyJenkinsProjectName' from gmail if you have the Jenkins Instant Messaging Plugin.

    In my first test I have received exceptions like this:

    Load of wsdl oramds:/soa/shared/workflow/NotificationService.wsdl oracle.mds.exception.MDSException: MDS-00054...


    the solution is to create in the SAR project (MyAppBPM) the file adf-config.xml inside the directory .../MyAppBPM/.adf/META-INF/ you can copy this file from main project (ExampleApp) and replace the variable ${oracle.home}/integration

     

    like this:
     

    Happy Hacking!
JoomShaper