Thursday, July 31, 2014

WF_EVENTS 3802: Agent does not exist Error using Business Event FIXED!

I faced the following error getting it from WF_ERROR: "3802: Agent does not exist" 

You got the error trying to execute a business event and it never is picked up for the BPEL that is listening the queue.

This is what I did to solve it:

1.- Query the business event you are facing problems and get the GUID value:

SELECT * FROM WF_EVENTS WHERE NAME LIKE 'oracle.apps.per.api.person.update_person'


2.- Once you get the GUID do the next query:

select * from WF_EVENT_SUBSCRIPTIONS where event_filter_guid in ('C0FA1882B0F6A80BE0301490C8C473C5')


3.- Check if the field is empty or if it has a value:

4.- If it has a value or is empty we have to check the properly GUID for this, this GUID corresponds to the GUID Agent of the WF_BPEL_Q, so we have to look for the GUID of the agent as follows:

select * from wf_agents where name = 'WF_BPEL_QAGENT'


Tuesday, February 18, 2014

How To Recreate The AIA weblogic User And Roles?

After changed the password of weblogic, all the roles and groups of AIA disapear, I tried the following to get them back.

To recreate the AIA user or rles for weblogic the following steps can be followed(weblogic should be running):

1) Copy of the file Test.xml to the directory $AIA_INSTANCE/config (poner el archivo en google drive).

2) Navigate to $AIA_HOME/Infrastructure/Install/AID.
3) Run the following command to remove and recreate the user roles:

ant -f AIAInstallDriver.xml -DDeploymentPlan=$AIA_INSTANCE/config/Test.xml -DPropertiesFile=$AIA_INSTANCE>/config/AIAInstallProperties.xml -logfile $AIA_INSTANCE/logs/Testl.log

I had to modified the command above for running in windows:


4) Check the log file to see is done successfully.

Thursday, February 6, 2014

Using java namespace with XSLT replace example

This is an example of how we can use basics Java functions (methods), sometimes it can be very useful. We will use the "Replace" function for the example.

This example only works when using an XSLT (Transform).

First take a look in the XSD which we are doing the example:




Then let's say that we want to replace any character of "&" (ampersand) that comes in the "Inputvariable" to the following character of "$" (dollar sign).

This is the XSLT that we need to implement the replace java function.



Now these are the steps for implementing the Java Replace Function.

1.- Add the following namespace
"xmlns:strClass="http://www.oracle.com/XSL/Transform/java/java.lang.String"




2.- Add the following Template at the bottom. (We have to use the HTML uni code name for the & its equivalence to unicode is \u0026)


  <xsl:template name="strReplace">
    <xsl:param name="param"/>
    <xsl:value-of select="strClass:replaceAll($param, '\u0026', '#')"/>
  </xsl:template>




3.- Add the "call-template" XSLT function and comment the actual mapping:


  <xsl:call-template name="strReplace">
    <xsl:with-param name="param"
          select="/client:process/client:input"/>
  </xsl:call-template>




Testing

After deploying the BPEL Composite in the EM using Hello$World.



We got:






Wednesday, February 5, 2014

Example query-database in BPEL 11g

This is an example of how to query directly from the database from BPEL, it can be done using an Assign or Tranform (XSLT).


    
      
        oraext:query-database("SELECT COUNT (STORE_ID) AS TOTAL_PROMO FROM SE_INT_FWK.SE_CAT_STORE",true(),true(),"jdbc/fwk")
        $totalStores
      
     

Friday, January 24, 2014

Get DDL from objects in PL-SQL

First you should find some information before try to get a DDL, this is related to the object type(Package, table, etc.) you want to find.

Use this query:

select * from all_objects where upper(object_name) = upper('swc_file_ctl_utl');


Now from the query above use the following fields "owner" and "object_type" you will need these values when you try to get its DDL.

Execute this query for obtaining the DDL:

select dbms_metadata.get_ddl(object_type => 'PACKAGE',name =>'SWC_FILE_CTL_UTL',schema => 'APPS')
 ddl from dual;

Monday, January 20, 2014

Process is not visible in BPM Workspace

A continuacion muestro un escenario donde no puedo ver un proceso en BPM para iniciarlo dentro de la consola de BPM Workspace.

Al diseƱar el proceso en el JDeveloper ya esta actualmente configurado como pueden ver.


Despues al intentar buscar el proceso en el BPM workspace no aparece!!


A pesar que podemos ver nuestro proceso en el "Enterprise Manager".


Para solucionar este problema fue muy simple, lo que hay que hacer es lo siguiente:

Solucion:


1. Primero que nada hay que revisar que el usuario este creado en el "Security Realms" en la consola de weblogic.


2. Ir a la consola del "Enterprise Manager" hay que dirigirse a la ruta: farm_nombre/Application Deployments/OracleBPMProcessRolesApp

3. Clic derecho sobre "OracleBPMProcessRolesApp" y sobre el menu nos dirigimos a: Security/Application Roles

4. Presionamos el boton donde lo indica la flecha y a continuacion se mostrara una lista en la cual identificamos nuestro rol que hemos definido en nuestro proceso "HelloWorld.Requester".

5. Seleccionamos el rol para agregar el usuario requerido.
6 Ahora nos aparecera la descripcion del rol que seleccionamos y presionamos el boton de "Add" para agregar el usuario que queremos registrar.


7. En la ventana que aparece hay que buscar el  usuario que deseamos, seleccionamos en "Type" como "User" primeramente, introducimos el usuario que queremos buscar y presinamos el boton con la flecha y por ultimo seleccionamos el usuario de la lista dando clic y presionamos el  boton "Ok".


8. Y por ultimo presionamos "Ok".


Prueba

Para probar entramos a la consola de "BPM Workspace" con el usuario que registramos en el rol de "HelloWorld.Requester" y nos dirigimos al tab de "Applications" para ver si ahora si aparece nuestro proceso de BPM.


GG HF!!

Friday, January 17, 2014

Extending custom EBO Sample - AIA 11g

Ahora voy a mostrar como extender un EBO. Por ejemplo en este ejemplo mostrare como extender el "Custom EBO" para "PayableInvoice" el cual se utiliza cuando se requiere hacer una integracion con el modulo de "Oracle AP" para la cuestion de facturas.

Primero vamos a encontrar la ruta donde se encuentra el esquema del "Custom EBO", y esta ruta se puede tomar de referencia para cualquier otro EBO que se requiera extender (Podemos usar el JDeveloper y la conexion a MDS para buscar la ruta).

/apps/AIAMetaData/AIAComponents/EnterpriseObjectLibrary/Core/Custom/EBO/PayableInvoice

El esquema sin modificar se muestra como sigue:
En este caso voy a extender dos elementos del esquema que serian los siguientes:

  • CustomPayableInvoiceEBOType
  • CustomPayableInvoiceLineType
Y agregare en cada uno algunos campos, lo cual primero necesito hacer una copia del XSD anterior y es necesario modificar la copia del archivo de manera local. En este caso pueden usar cualquier editor de archivos.



Una vez modificado el archivo hay que reemplazarlo en el archivo original que se encuentra fisicamente en nuestro servidor donde se encuentra instalado AIA, en mi caso que estoy usando un servidor de Windows, lo pondremos en su ruta correspondiente (via FTP o compartir carpeta) como se muestra en la siguiente figura:


Les recomiendo primero hacer una copia del archivo original antes de copiar el que modificaron.

Ahora que tenemos nuestro archivo listo para usar, primero hay que actualizarlo en el repositorio "MDS", para esto tenemos que correr el siguiente comando:

ant -f UpdateMetaData.xml

El archivo "UpdateMetaData.xml" se encuentra en la ruta:

E:\oracle\middleware\aia11g\Infrastructure\Install\config (tomando como referencia mi instalacion".

Probar

Ahora vamos a ver si se ha actualizado nuestro archivo en el repositorio "MDS" desde nuestro JDeveloper (Hay que hacer refresh a la conexion antes).

Para esto no abrire directamente el EBO, si no mas bien el EBM "PayableInvoiceEBM.xsd".

Ahora que lo tenemos abeirtos podemos buscar el elemento "CreatePayableInvoiceEBM" o cualquier otro:


Buscamos dentro de su estructura la referencia "Custom" donde agregamos los nuevos elementos:


Si los podemos visualizar como se muestra en la figura anterior es que todo salio exitosamente.

Nota: Si tienen problemas para visualizar los cambios o les arroja errores el update del archivo "UpdateMetaData", revisen el archivo "UpdateMetaData.xml" y verificar que tengan la referencia de la ruta donde se encuentra nuestro "Custom EBO" para que se cargue. Ej.



GL HF!!

Thursday, January 16, 2014

BPEL 11g Handle XML without a namespace

Ahora me he encontrado con un escenario en el cual recibo un XML de un sistema externo y el XML no cuenta con un namespace.

Para este tipo de escenario siempre primero genero su correspondiente XSD usando el JDeveloper.


Voy a poner de ejemplo el sig. XML:



  
    NULL
    2.8 GHz Computer
    DSC
    3658
    HBISCPU
    1
    105913
    722.18
    722.18
  
  
    NULL
    2.8 GHz Computer
    DSC
    3658
    HBISCPU
    1
    105813
    722.18
    722.18
  


Ahora voy a proceder a generar su XSD.

En JDevelper presionamos "New" y en la galeria seleccionamos "XML Schema from XML Document"




Llenamos los datos para generar el nuevo esquema:




Para esto hay que dejar en blanco el campo de "Target Namespace".

El XSD quedaria de la siguiente manera:



  
    
      
        
          
            
              
              
              
              
              
              
              
              
              
            
            
          
        
      
    
  


Ahora podemos importar nuestro XSD en BPEL para poder crear una variable y recibir el XML.