Proyecto

General

Perfil

Evento que crea la estructura de carpetas de una organización.

Información

Autor Belén Aguilera, Diego Hernández, Teresa Quilez, David Henriquez
Sitio Web http://www.adapting.com
Repositorio source:Crear_Estructura_Carpetas CreateOrganizationsFoldersRegistrar
Código fuente http://svn-community.adapting.com:8080/svn/Community/Plugins/Crear_Estructura_Carpetas/
Versión Actual v3.0
Compatible con Abox 2.3.3, Abox 2.6.3, Abox 2.6.6, Abox 2.7.0, abox 2.7.3

Resumen

Este plugin se registra al evento después de guardar y borrar una organización y se creó con el fin de crear una estructura de carpetas por organización con sus respectivos permisos predefinidos.

La idea es que solo los usuarios de la organización puedan ver la carpeta de dicha organización. Para hacer eso se guarda como un metadato el código de la carpeta en la organización y en un metadato de la carpeta el código de la organización.

Se ha mejorado este plugin para que se pueda configurar la estructura o jerarquía de carpetas que se debe crear usando un XML de configuración.

Cuando se edite el código o el nombre de la organización, también se modificará en la carpeta o el expediente.

Cuando se elimine la organización se procederá a archivar la carpeta y se modificará el metadato descripción con un mensaje que incluye el código de la organización correspondiente.

Notas de instalación

Descargue el código fuente del plugin y compílelo usando Visual Studio 2010. Luego dependiendo si lo va a integrar en una instalación de Abox o en un proyecto de extensión de Abox sigua las siguientes instrucciones.

En una instalación de Abox

Copiar las dll que genera el proyecto, en principio se debe llamar "Adapting.One.ExtranetFunctions.dll" y "Adapting.CreateOrganizationsFolderRegistrar.dll", en la carpeta /bin del sitio web donde esta Abox.

Para poder guardar el código de la carpeta en la organización, se crea un metadato con código "folderFieldCode".

Para poder guardar el código de la organización en la carpeta, se crea un metadato con código "relatedOrg".

En caso de querer crear expediente:

Para poder guardar el código del expediente en la organización, se crea un metadato con código "caseFolderFieldCode".

Para poder guardar el código de la organización en el expediente, se crea un metadato con código "caseFolderRelatedOrganization".

Guía de uso

Primero tiene que configurar el XML para establece los parametros que se van a usar para generar la estructura de carpetas. El XML es el siguiente


<?xml version="1.0" encoding="utf-8" ?>
<createOrganizationsConfig>

  <foldersConfig>

    <!-- Tipo de organización -->
    <folderConfig organizationType="RootOrganizationType">

        <params>    

                 <!-- En el valor de la etiqueta se coloca el código del metadato de la organización que hace referencia a la carpeta --> 
         <param code="folderFieldCode">folderFieldCode</param>

                 <!-- En el valor de la etiqueta se coloca el código del metadato de la carpeta que hace referencia a la organización --> 
          <param code="organizationFieldCode">relatedOrg</param>

          <!-- Si desea crear expediente coloque el siguiente par de metadatos --> 
          <!-- En el valor de la etiqueta se coloca el código del metadato de la organización que hace referencia al expediente --> 
          <param code="caseFolderFieldCode">caseFolderFieldCode</param>

          <!-- En el valor de la etiqueta se coloca el código del metadato del expediente que hace referencia a la organización --> 
          <param code="caseFolderOrganizationFieldCode">caseFolderRelatedOrganization</param>

          <param code="createUser">false</param>

          <!-- Código del usuario, si tiene la keyword "[organizationCode]" buscar el usuario por medio del código de la organización -->
          <param code="usercode">[organizationCode]</param>

          <!-- Código del metadato de la organización donde se guarda el correo electronico del usuario relacionado-->
          <param code="useremail">userEmail</param>

          <!-- Tipo de usuario a crear -->
          <param code="userType">PAS</param>         

          <!-- Establece los roles que se le van a asignar al usuario que se crea, teniendo en cuenta lo siguiente:
            1. Si el tipo de usuario es pasivo solo se le va a asignar el rol pasivo
            2. Solo en el caso que el tipo de usuario NO sea pasivo se asignaran los roles especificados en este parametro-->
          <param code="userRoles"></param>    

          <!-- Establece si se va a enviar una notificación de la creación del usuario -->
          <param code="sendNotification">false</param>

        </params>

        <!-- Configuración de la carpeta correspondiente -->
        <!-- parentCode: Código de la carpeta padre donde se creará la carpeta. -->
        <folder code="{organizationcode}" parentCode="RootFolder">
          <name>{organizationName}</name>
          <entityTypeCode>RootFolderType</entityTypeCode>   

          <noInherit>true</noInherit>

          <!--Establece lo permisos que va a tener la carpeta de la organización. Los permisos permitidos son: Inherit,None,Access,Modify,Total-->
          <permissions>
            <permission role="organization">None</permission>
            <permission role="parentorganization-except-rootOrganization">Total</permission>
            <permission role="addorganizationtoparent-except-rootOrganization">View</permission>
            <permission role="_ADM_">None</permission>
          </permissions>

          <!-- Configuración de la jerarquía de las subcarpetas. -->
          <subfolders>

            <!-- code: Sufijo del código de la carpeta (codOrganizacion-codFolder). -->
            <folder code="root">

              <!-- Configuración de la subcarpeta. -->
              <name>Raiz</name>
              <noInherit>true</noInherit>

              <permissions>
                <permission role="__ADM__">Total</permission>
                <permission role="adm_demo">Total</permission>
                <permission role="usr_demo">Access</permission>
              </permissions>

              <subfolders>
                <folder code="adm">
                  <name>Administración</name>
                </folder>
                <folder code="qos">
                  <name>Calidad</name>
                </folder>
                <folder code="com">
                  <name>Comercial</name>
                </folder>
                <folder code="dir">
                  <name>Dirección</name>
                </folder>
                <folder code="fac">
                  <name>Facturas</name>
                </folder>
              </subfolders>

            </folder>

          </subfolders>
        </folder>

       <casefolder code="{organizationcode}" parentCode="RootFolder">
        <name>{organizationName}</name>
        <entityTypeCode>SerieXXX</entityTypeCode>
        <noInherit>true</noInherit>
        <!--Establece lo permisos que va a tener el expediente, cuando no se hereden. Los permisos permitidos son: Inherit,None,Access,Modify,Total-->
        <permissions>
          <permission role="organization">None</permission>
          <permission role="parentorganization-except-rootOrganization">Total</permission>
          <permission role="addorganizationtoparent-except-rootOrganization">View</permission>
          <permission role="_ADM_">None</permission>
        </permissions>
      </casefolder>

      </folderConfig>        

    </foldersConfig>

</createOrganizationsConfig>


Una vez creado y configurado el fichero XML. Ponga ese fichero en una ruta accesible desde su instalación y añada la entrada de configuración _ createOrganizationConfig_ en appSettings.config. Así:


<appSettings>
  <!--Este parametro es el que debe estar puesto en la aplicación en producción.-->
  <!--<add key="dataPath" value="~/../Data/" />-->
  <!--Solo usar esta entrada de configuración cuando se quiera configurar Data en una ubicación de red.-->
  <add key="UNCDataPath" value="\\Saturno\\web\\rodi\\Data"/>
  <add key="createOrganizationConfig" value="D:\Adapting-One\rdi-document\CreateOrganizationsConfig.xml"/>
</appSettings>



ó


<appSettings>
  <!--Este parametro es el que debe estar puesto en la aplicación en producción.-->
  <add key="dataPath" value="~/../Data/" />
  <!--Solo usar esta entrada de configuración cuando se quiera configurar Data en una ubicación de red.-->
</appSettings>



Historico

24/02/2012 -> Actualizado a la versión 2.6.3
19/06/2012 -> Actualizado a la versión 2.6.6
20/06/2012 -> Actualizado a la versión 2.7.0
30/08/2012 -> Actualizado a la versión 2.7.3

21/02/2013 (2.7.7+): Ahora es posible crear un expediente paralelo a la primera carpeta de la organización.

26/02/2013 (2.7.7+): Se ha modificado el código del metadato de la carpeta que hace referencia a la organización (relatedOrganiztion por relatedOrg). Se debe colocar la nueva dll y ademas modificarlo en el xml de configuración.

08/03/2013 (2.7.7+):

1. Lógica de creación de carpetas y expediente ahora es independiente.

Es decir que puede crear expedientes sin necesidad de crear una carpeta o viceversa.

la manera de decirle a abox que no cree uno u otro es quitando/comentarenado los metadatos a quien corresponde por ejemplo.

Si no quiere crear carpetas.


<?xml version="1.0" encoding="utf-8" ?>
<createOrganizationsConfig>

  <foldersConfig>

    <!-- Tipo de organización -->
    <folderConfig organizationType="RootOrganizationType">

        <params>    

          <!-- ********************  Comentareé estos metadatos *******************-->       
          <!--param code="folderFieldCode">folderFieldCode</param>                 
          <param code="organizationFieldCode">relatedOrg</param-->

          <!-- Si desea crear expediente coloque el siguiente par de metadatos --> 
          <!-- En el valor de la etiqueta se coloca el código del metadato de la organización que hace referencia al expediente --> 
          <param code="caseFolderFieldCode">caseFolderFieldCode</param>

          <!-- En el valor de la etiqueta se coloca el código del metadato del expediente que hace referencia a la organización --> 
          <param code="caseFolderOrganizationFieldCode">caseFolderRelatedOrganization</param>

          ...

Si no quiere crear expediente.


<?xml version="1.0" encoding="utf-8" ?>
<createOrganizationsConfig>

  <foldersConfig>

    <!-- Tipo de organización -->
    <folderConfig organizationType="RootOrganizationType">

        <params>        

          <param code="folderFieldCode">folderFieldCode</param>                 
          <param code="organizationFieldCode">relatedOrg</param>

          <!-- ********************  Comentareé estos metadatos *******************-->       
          <!--param code="caseFolderFieldCode">caseFolderFieldCode</param>
          <param code="caseFolderOrganizationFieldCode">caseFolderRelatedOrganization</param-->

          ...

2. Ahora es posible asignar tipos a los subfolders.

Añadir esta nueva etiqueta a los subfolders.


<entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA -->

Si no se añade el tipo entonces tomara el de la carpeta padre.


<?xml version="1.0" encoding="utf-8" ?>

          ...

      <!-- Configuración de la jerarquía de las subcarpetas. -->
          <subfolders>

        <!-- code: Sufijo del código de la carpeta (codOrganizacion-codFolder). -->
            <folder code="root">

          <!-- Configuración de la subcarpeta. -->
              <name>Raiz</name>

              <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA -->

              <noInherit>true</noInherit>

              <permissions>
                <permission role="__ADM__">Total</permission>
                <permission role="adm_demo">Total</permission>
                <permission role="usr_demo">Access</permission>
              </permissions>

              <subfolders>
                <folder code="adm">
                  <name>Administración</name>
                  <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA -->
                </folder>
                <folder code="qos">                  
                  <name>Calidad</name>
                  <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA --> 
                </folder>
                <folder code="com">
                  <name>Comercial</name>
                  <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA -->
                </folder>
                <folder code="dir">
                  <name>Dirección</name>
                  <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA -->
                </folder>
                <folder code="fac">
                  <name>Facturas</name>
                  <entityTypeCode>Codigo_del_tipo_de_carpeta</entityTypeCode>  <!-- <--------------  NUEVA ETIQUETA --> 
                </folder>
              </subfolders>

            </folder>

          </subfolders>

          ...

15/03/2013 (2.7.7+):

1. A la carpeta/expediente no se le colocará como prefijo de su código "ORG"
2. Si al momento de crear un expediente para organización ya existe o se creará una carpeta entonces se le colocará como sufijo ".exp"
3. Si se elimina una organización su carpeta/expediente se archivará y si se crea una organización con el código de una ya eliminada entonces anulará el archivo de la carpeta/expediente correspondiente a ese código.

01/06/2014 (2.7.12+):

Ahora permite crear a la vez un expediente y una carpeta.

Volver al inicio
Agregar imagen desde el portapapeles (Tamaño máximo: 10 MB)