lunes, 14 de junio de 2010

Patrones de trabajo avanzados

0 comentarios
 

Anteriormente se documentó la forma de definir XML's básicos de patrones de trabajo. Puede
consultarse dicha entrada en: Comunidad KMKey en Español: XML para definir objetos en patrones

Ahora vamos a centrarnos en introducir funcionalidades más avanzadas, de forma que empecemos a usar todo el potencial de esta herramienta que son los patrones de trabajo.

Bloquear o desbloquear perfiles en una tarea


<task otros_atributos blocked_roles="role1,role2,roleN" />
<task otros_atributos non_blocked_roles="role1,role2,roleN" />

Nos permite bloquear o desbloquear explícitamente ciertos perfiles en una tarea del patrón. Corresponde al apartado de Perfiles Bloqueados de la pantalla de Equipo / Permisos cuando nos encontramos en un expediente ya creado. Los role1, role2, .. etc, corresponden al nombre interno
del perfil, que puede consultarse en el campo Perfil Relacionado de un grupo de permisos.


Asignar perfiles a usuarios o grupos concretos


<access usernames="username1,username2" roles="role1,role2"/>

<access groups="41718292,4343413" roles="role1,role2"/>

La nomenclatura es usernames="user1,user2" roles="role_para_user1,role_para_user2", manteniendo una concordancia de usuarios y perfiles.

La misma sintaxis puede usarse para asignar perfiles a usuarios o grupos dentro de una tarea concreta, usando la jerarquía del XML:


<task atributos_de_la_tarea>

<access usernames="username1,username2" roles="role1,role2"/>

<access groups="41718292,4343413" roles="role1,role2"/>

</task>


Uso de patrones de tareas distintos

El tag default_portal_type permite asociar un portal_type por defecto a un tag XML. El caso más típico es el de los tags task usados para la definición de tareas. Pero podemos desear que ciertas tareas se creen usando otro patrón de tareas, por ejemplo en casos que necesiten disponer de campos específicos en la definición de la tarea. En esos casos, se puede usar el atributo portal_type dentro del propio tag task para definir un patrón de tarea a utilizar distinto del establecido por defecto.


<?xml version="1.0" encoding="iso-8859-1" ?>

<objects xmlns:tal="http://xml.zope.org/namespaces/tal">

<default_portal_type tag="task" portal_type="KMKey Task" />

<task Title="Propuesta de Producto" planned_end="reference_date+120"
planned_start="reference_date+0" portal_type="kmkey_patron_tarea"
responsible="role:director_tecnologico" task_id="51" wbs="1"/>

<task Title="Diseño Preliminar" planned_end="reference_date+221" planned_start="reference_date+80" responsible="role:jefe_diseno" task_id="52" wbs="2"/>

</objects>


Uso de TAL para cambiar el patrón segun valores de los campos de Definición


Otra funcionalidad muy interesante es la de poder hacer uso del sistema de plantillas TAL para generar un XML dinámico de definición del patrón de trabajo. Se puede encontrar más información sobre la sintaxis del Template Attributes Language en la red, pero dejamos aquí un enlace a una guía introductoria: http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZPT.stx

El uso de TAL nos permite, por ejemplo, condicionar ciertas tareas a determinados valores de campos de la Definición del expediente, o incluso hacer bucles para crear una tarea N veces. Hay que tener claro que las instrucciones TAL se ejecuta en primer lugar, generando un XML resultante que se procesa en segundo lugar, dando lugar a la generación del expediente. Veamos aquí un ejemplo de una tarea condicional:

<?xml version="1.0" encoding="iso-8859-1" ?>

<objects xmlns:tal="http://xml.zope.org/namespaces/tal" tal:define="project python:here['getKMProject'](here)">

<default_portal_type tag="task" portal_type="KMKey Task" />


<task task_id="1" Title="Proyecto + Geotécnico + Control de Materiales" responsible="role:tecnico-de-obra-oct" planned_hours="56" planned_start="parent['planned_start']-15"planned_end="parent['planned_start']-9" tal:condition="python:'Estabilidad' in project['categories']" />

</objects>


Leave a Reply