Creación de un contexto de negocio nuevo

Todos los contextos de negocio se registran en un archivo de configuración de contexto de negocio. En el archivo, tiene que especificar una clase de fábrica de contexto de negocio para crear el contexto de negocio. Si se utiliza la clase impleBusinessContextFactor, la clase de fábrica predeterminada, para crear el contexto de negocio, debe proporcionar a la fábrica el nombre de la clase de implementación como uno de los parámetros. Para registrar un contexto de negocio en el sistema, consulte el archivo de configuración del contexto de negocio.

Procedimiento

  • Clase de fábrica de contexto de negocio

    Cuando se crea la clase de fábrica para crear una instancia del objeto de contexto de negocio, la clase debe implementar la interfaz BusinessContextFactory. Hay dos métodos que la clase de fábrica debe implementar: createContextSPI() y destroyContextSPI(). Estos dos métodos se utilizan para crear instancias y eliminar los contextos de negocio de un tipo determinado.

    En lugar de implementar la interfaz, también puede ampliar la clase AbstractBusinessContextFactory. Esta clase abstracta proporciona posibilidades de agrupación de objetos que permite volver a utilizar un contexto de negocio. El método createContextSPI() recuperará el contexto de negocio de una agrupación de objetos mientras el método destroyContextSPI() devolverá el contexto de negocio a la agrupación. Para beneficiarse de esta posibilidad desde la clase abstracta, tiene que implementar el método abstracto getContextSPIImplClassname() de modo que devuelva el nombre de clase de la implementación del objeto de contexto de negocio.

  • Clase de implementación del contexto de negocio

    Cada contexto de negocio registrado en el sitio debe implementar las interfaces Context y ContextSPI. La interfaz Context se ha ampliado y proporciona métodos que utiliza la lógica de negocio para recuperar la información de contexto. La interfaz ContextSPI proporciona métodos con los que el servicio de contexto de negocio puede interactuar para señalar sucesos como, por ejemplo, el inicio o el fin de una petición.

    Para crear un nuevo contexto de negocio, debe definir una interfaz nueva, por ejemplo,MyCustomContext, que sea una ampliación de la interfaz Context. En la nueva interfaz, defina un campo de constante estático denominado CONTEXT_NAME que almacena el nombre utilizado para hacer referencia a este contexto. Siguiendo el convenio de HCL Commerce, se utiliza el nombre del paquete totalmente calificado del contexto de negocio, com.mycompany.context.custom.MyCustomContext. También se deben definir todos los métodos que están expuestos a la lógica de negocio. El ejemplo siguiente muestra una interfaz de contexto nueva:

    
    public interface MyCustomContext extends Context { 
    /** 
    * The name of the context that are used to reference this context. 
    */ 
    public static final String CONTEXT_NAME = "com.mycompany.context.custom.MyCustomContext"; 
    
    
    /** 
    * Method that is exposed to business logic. 
    * Returns a string that is saved in this custom context. 
    

    Ahora que se ha definido la interfaz de contexto de negocio nueva, debe proporcionarse la clase concreta que implementa esta interfaz. Esta clase de implementación debe implementar las interfaces Context y ContextSPI. Se proporciona una clase AbstractContextImpl para ayudarle a implementar la mayor parte de los métodos en estas interfaces. Cuando cree una clase de implementación personalizada nueva, debe ampliar la clase AbstractContextImpl e implementar la nueva interfaz de contexto. Por ejemplo:

    
    public class MyCustomContextImpl extends AbstractContextImpl implements 
    MyCustomContext { 
    

    La nueva implementación del contexto de negocio debe implementar el método getContextName() para devolver el nombre que se va a utilizar para hacer referencia a este objeto. Esto debe devolver la variable CONTEXT_NAME definida en la interfaz.

    
    public String getContextName() {
         return CONTEXT_NAME;
    

    } Además del método getContextName(), se deben implementar los siguientes métodos abstractos de la claseAbstractContextImpl en la nueva implementación:

    initializeContext(ActivityData initData)
    Con un conjunto de pares de nombre y valor concretos definidos en el parámetro initData, inicialice el contexto de negocio. Se llama a este método cuando se inicia una actividad nueva desde el cliente.
    preInvokeContext(ActivityData sessionData)
    Con un conjunto de pares de nombre y valor concretos definidos en el parámetro sessionData, efectúe las tareas específicas del contexto antes de ejecutar la petición. Se llama a este método cuando una actividad ya se ha establecido y se inicia una petición nueva desde el cliente.
    getContextAttributes()
    Obtenga la matriz de atributos que se ha de incluir en la representación de serie de este contexto. Esta matriz se serializará y almacenará en la base de datos.
    setContextAttributes(String[] ctxAttrs)
    Con una matriz de atributos de contexto concreta, rellene el contexto como corresponda.
    clearContext()
    Restaure el atributo de este contexto a su valor predeterminado.