cancel
Showing results for 
Search instead for 
Did you mean: 

WebDynpro Java - Crear una clase java para usa como controlador

Former Member
0 Kudos

Hola,

Estoy realizando una web en web dynpro java donde tengo diferentes views donde muestro diversa información la cual accedo desde el backend de SAP R/3 con llamadas RFC.

Una vez finalizada la web será instalada en el cliente, a partir de aquí se realizará un mantenimiento de la web. Para que este mantenimiento sea más sencillo he pensado en crear una clase java donde centralizar todas las llamadas que realizo al backend, para que así cualquier modificación posterior sea más sencilla.

Entonces, esto es una buena idea? Alguien me puede decir como crear una clase java en web dynpro Java donde incluiré los diversos métodos que se encargarán de acceder a la BD. Siempre que creo un nuevo view automáticamente se crea su clase java correspondiente, pero como creo una clase java sin tener asociado un view.

Espero vuestros comentarios.

Saludos,

Rubén Gutiérrez.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

Otra sugerencia. En la imagen puse todos los controller juntos. Yo tendría separada la aplicación en distintos DCs. Uno o más para las vistas, uno para el Controller wrapper y uno o varios para los controllers que acceden a las RFCs.

Esto facilita la administración y la reutilización de los componentes.

Saludos, Aldo.

Former Member
0 Kudos

Muchas gracias por tu respuesta Aldo.

Me parece muy buena idea lo que me dices. Una cosa, no podríamos eliminar el wrapper del diagrama y que los views se comuniquen directamente con el component controller, y éste con los controladores que acceden al modelo. De esta forma todos los métodos para acceder al backend están centralizados en el component controller sin necesidad de pasar por el wrapper. Y si queremos acceder a OtroControlador (como tienes en tu imagen) en lugar de hacerlo a través del wrapper lo hacemos a través del component controller. Quedaría así el diagrama con el cambio que te comento (tu 2a contestación no se refleja en esta imagen):

http://piczasso.com/s.php?s=ez0a7.JPG

Sobre tu segunda contestación totalmente de acuerdo.

Saludos y gracias,

Rubén Gutiérrez.

Former Member
0 Kudos

Sí, está bien lo que tu dices. La única diferencia al no utilizar un wrapper es que el component controller no podría estar en un DC por separado y por esto no podría ser reutilizado. De todas formas hay que tener cuidado con crear muchas capas, hay que llegar a un equilibrio.

En mi imagen quedó mal reflejado algo. La idea no era que el component controller accediera a un modelo, sino que fueran distintos controladores. Me quedó el diagrama con el component controller por pereza de no crear un nuevo controller.

Saludos, Aldo.

Former Member
0 Kudos

Gracias de nuevo Aldo, muy rápidas tus contestaciones.

Totalmente de acuerdo en cuanto al equilibrio entre capas.

Tus respuestas me han servido de mucha ayuda.

Saludos,

Rubén Gutiérrez.

Answers (1)

Answers (1)

Former Member
0 Kudos

Rubén, yo te recomendaría agregar un component controller extra en lugar de una clase. Es una solución más pura de WDJ. Este component controller tendría vinculados al resto de los component controllers de la aplicación como se ve en la siguiente imagen.

En el controller tendrías que agregar un método para llamar a cada método de los controladores que realmente están vinculados al modelo. Por ejemplo:

  //@@begin javadoc:prueba()
  /**
   * Method declared by application. 
   */
  //@@end
  public void prueba( )  {
    //@@begin prueba()
	  wdThis.wdGetPruebaJCompController().executeZhr_Tablas();
    //@@end
  }

Luego, desde la vista llamas al método del controlador que hace wrapper:

   wdThis.wdGetPppController().prueba();

Saludos,

Aldo.