Algoritmia - We are geeks, after all ;)
  Crear una cuenta
Inicio Buscar Foros Chat Downloads Login
 [Login]
Foros
Ir a los foros 

Menú Trucos Ax
 Inicio(Noticias) :
 Inicio
 Enviar Noticias
 Archivo de noticias
 Buscar
 Temas

 Miembros :
 Lista de miembros
 Tu Cuenta(Regístrate)

 Comunidad :
 Chat

 Foros

 Links

 Downloads

 Estadísticas :
 Estadísticas
 Top 10
 Encuestas

 Otros Servicios :
 Publicidad


 Miscelanea :
Añadir a favoritos
Contactar


Hemos recibido

impresiones desde Diciembre 2005


 Enlázanos :
Copia el código siguiente en tu web para enlazarnos :


Trucos Ax


Mensajes rápidos

Sólo los usuarios registrados pueden escribir login o crear una cuenta.

Trucos
Ir a trucos programación
Ir a trucos consultoría

AxSearch

AxSearch
Es un motor de búsqueda
específico sobre temas
de Axapta (Dynamics Ax)

Anuncios



Mapa

¿De donde venimos?
Ubicación de visitantes de esta página

Webs Amigas
[axapta-links.com] - The startpage for Axapta
DaxGuy


Fred Shen

Comunidad Ax
Conunidad AX

Anuncios



Trucos Ax: Foros

Trucos Ax :: View topic - Procesos por Lotes y servicios de Windows
 Forum FAQForum FAQ   SearchSearch   UsergroupsUsergroups   ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Procesos por Lotes y servicios de Windows

 
Post new topic   Reply to topic    Trucos Ax Forum Index -> Trucos configuración
View previous topic :: View next topic  

¿Como valoras este truco (1/5)?
5
83%
 83%  [ 5 ]
4
16%
 16%  [ 1 ]
3
0%
 0%  [ 0 ]
2
0%
 0%  [ 0 ]
1
0%
 0%  [ 0 ]
Total Votes : 6

Author Message
Manekaze
Site Admin
Site Admin


Joined: Dec 02, 2005
Posts: 384

PostPosted: Tue Jun 06, 2006 11:36 pm    Post subject: Procesos por Lotes y servicios de Windows Reply with quote

//**********************************************************
// Tipo : Implantación/Consultoría
// Titulo : Procesos por Lotes y servicios de Windows
// Código : TC0007
// Keywords : Configuración, Consultoría, Axapta 3.0
// Sub-keywords : Procesos por Lotes, Batch, Servicio, SrvAny, InstSrv
// nssm, Windows Resource Kit
//
//**********************************************************

Como todos sabéis, Axapta incorpora una gestión de trabajos por lotes. Es más, nos es relativamente fácil crear una clase para que realice un proceso mediante el sistema de lotes programados haciendo simplemente que esta herede de RunBaseBatch.

El pequeño problema es que resulta que para que se ejecuten los procesos programados (lotes o batch) debemos mantener una instancia de cliente de Axapta en marcha ejecutando la opción “Base/Periódico/Lote/Procesamiento”. Esto es recomendable hacerlo en una máquina destinada a tal efecto y con una instalación de tipo “fat-client”.

Pero … y si tengo n grupos de lotes a procesar … tengo que iniciar n instancias de cliente de Axapta y ejecutar opción comentada en cada una de ellas cambiando el grupo de lote a ejecutar. Hasta aquí bien, pero … reiniciar esta máquina es una odisea, porque implica tener que realizar la misma operación cuando esta arranque para cada una de las instancias de Axapta. A parte puede suponer un problema de seguridad el hecho de tener una máquina con una sesión abierta las 24 horas del día … mmm y …

¿ No puede hacerse mediante servicios de Windows ?

De esta forma, se arrancan solos al iniciar la máquina, no es necesario iniciar una sesión, si falla algo se reinicia el servicio (sobre esto hablaremos al final) … todo son ventajas … pues hagamos lo.

He estado buscando información sobre el tema y a continuación os propondré una solución que es la mezcla de varias que he leído por la red. Lo único que puedo decir es que creo que es la óptima y de hecho es la que he usado esta misma tarde en las instalaciones de un cliente.

Axapta como tal no dispone de esta funcionalidad (al menos en su versión 3.0), y por tanto tendremos que tirar de otros recursos.

Vamos a necesitar un par de programas llamados SrvAny.exe y InstSrv.exe que se encuentran en el Windows NT Resource Kit (también los he puesto en la zona downloads/utilidades)

Vamos a hacerlo en 5 pasos :

1. Lo primero será editar algo de código en Axapta para permitir la ejecución parametrizada de un grupo de trabajos por lotes determinado.

Para ello, debemos tocar el método InfoRun de la clase SysStartupCmdBatchRun como sigue :

x++:

void infoRun()
{
    batchRun batchRun = new batchRun();
;
    batchRun.parmUseForm(true);
    batchRun.parmGroupId(parm); // TrucosAx.com - Acepta el grupo como parametro : batch_xxx
    batchRun.run();
}


2. Ahora debemos crear un usuario en Axapta que se encargará de la ejecución de todos nuestros procesos por lotes. Lo llamaremos por ejemplo : Batch..

Desde opciones de usuario le debemos asociar una cuenta de red. Esto es, para entendernos, un usuario de Windows. En mi caso le asociaré la cuenta de “Administrador”, pero podéis crear un usuario de Windows para esta tarea. Este usuario será el que se encargará, como veremos más adelante, de la ejecución de los servicios de procesos por lotes.

3. Ahora debemos crear una configuración de Axapta para el usuario de Windows que hayamos decidido en el paso anterior (es decir, iniciamos sesión en el sistema con el usuario anterior y ejecutamos el “Axapta Configuration Utility”.

Creamos la configuración como si de un usuario normal se tratara (La llamaremos ConfigBatch), pero debemos añadir un par de parámetros adicionales :

• En “StartupCommand” escribimos : “Batch_xxx” (sin las comillas y donde xxx es el código del grupo de lotes que queremos ejecutar)
• En “Advanced” escribimos : “-windowsauth=1” (sin las comillas)


4. Vamos a crear el servicio. Primero copiamos los ficheros srvany.exe y instsrv.exe en una carpeta de la máquina como por ejemplo “C:\Services”.

Para crear el servicio ejecutamos el programa InstSrv.exe con el nombre de nuestro servicio como parámetro. Nosotros lo vamos a llamar “Axapta Batch Service”. Abrimos el símbolo de MS-DOS (ejecutar … cmd) y escribimos :

C:\Services\InstSrv.exe “Axapta Batch Service” C:\Services\SrvAny.exe

Al pulsar intro nos creará el servicio con el nombre que le hemos dado.

Ahora hay que tocar algunos parámetros de este servicio nuevo para indicarle que ejecute nuestros procesos por lotes. Para ello abrimos el editor del registro de Windows (ejecutar … regedit.exe)

Nos dirigimos a la ruta :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Axapta Batch Service
Ahora botón de la derecha, nueva clave y la llamamos “Parameters”.



Ahora debemos añadir 3 valores alfanuméricos a la nueva clave que hemos creado :
Application : Como valor tendrá la ruta completa hasta el ejecutable del cliente de Axapta, en mi caso “C:\Archivos de programa\Navision\Axapta Client\Bin\ax32.exe”.
AppDirectory : Como valor tendrá la carpeta en la que se encuentra el cliente de Axapta, en mi caso “C:\Archivos de programa\Navision\Axapta Client\Bin”
AppParameters : Como valor tendrá : “-regconfig = ConfigBatch” donde ConfigBatch es el nombre de la configuración que hemos creado en el paso 3.

Nota : Todos los valores sin las comillas.



5. Hay que asociar una identidad de Windows a nuestro nuevo servicio. Para ello vamos al Panel de Control / Herramientas administrativas / Servicios y buscamos el nuestro.

Entramos a editar sus propiedades y en la solapa “Iniciar sesión” le asociamos el usuario de Windows que teníamos pensado para ejecutar todos estos procesos (en mi caso “Administrador”).



Finalmente, si hemos realizado todos los pasos correctamente … podemos iniciar el servicio (si está en modo automático se iniciará solo cada vez que arranque la máquina) y ya se ejecutan nuestros trabajos por lotes desde un servicio de Windows Wink

Hemos visto que en el paso uno hemos modificado un método de Axapta para pasar el grupo de lotes a ejecutar por parámetro (que luego lo pasamos desde la configuración que hemos creado). Por tanto, si queremos ejecutar diversos grupos de lotes podemos crear tantos servicios como queramos con sus configuraciones indicando los distintos grupos a ejecutar.


IMPORTANTE

Realizando diversas pruebas de consistencia con los servicios y los procesos por lotes … hemos observado que srvany.exe parece tener algún problema para controlar los errores o excepciones que pueda provocar nuestra sesión de ejecución por lotes. Por ejemplo : Si desde otra sesión nos vamos a usuarios en línea, seleccionamos una de las sesiones de nuestro usuario Batch y le damos al botón terminar sesión … esta termina, pero ¡el servicio no se entera y continua ejecutándose!.

Después de buscar y rebuscar por la red, hemos encontrado una especie de substituto de “srvany”, se llama “nssm” y parece controlar mejor los posibles errores que puedan surgir en nuestra sesión mientras esta se ejecuta como servicio.

Por tanto, hemos incluido también este otro gestor de servicios en la sección de downloads/utilidades por si queréis usarlo en lugar de “srvany”.

Lo único que hay que hacer es copiarlo en un directorio, por ejemplo “C:\Services” y debemos editar el registro en la clave :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Axapta Batch Service


Y sustituir el valor de “ImagePath” que tiene por valor “C:\Services\srvany.exe”, por este otro : “C:\Services\nssm.exe run”

Este nuevo gestor del servicio, monitoriza nuestra aplicación y en caso de error la reinicia.


Hasta aquí este truco, espero que os sea de ayuda.

Saludos,

Mkz.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Trucos Ax Forum Index -> Trucos configuración All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©

 
Trucos Axapta 
Comunidad aprobada por :
Microsoft corp. MVP LogoVisit community


Axapta y Dynamics Ax son marcas registradas de Microsoft corporation.
Todos los logos y marcas son propiedad de sus respectivos propietarios.
Excepto trucosAx.com que este si que es mio :-). (c) 2005 by Manel Querol (Mkz)
TrucosAx.com no pertenece ni está asociada a Microsoft corporation.
Los fragmentos de código y proyectos importables que aquí se muestren están realizados sobre bancos de pruebas. No nos hacemos responsables de cualquier daño o pérdida de datos que se pudiera originar del hecho de instalar alguno de estos ejemplos en un sistema productivo. Es responsabilidad del usuario ser consciente del impacto que puede ocasionar en sus aplicaciones el uso del código que de aquí extraiga.