Modificar o agregar un campo para admitir consultas, informes y flujos de trabajo

El proyecto de equipo contiene 100 o más campos de datos, en función de la plantilla de proceso utilizada para crear el proyecto de equipo. Cada campo está asociado a un par de nombres, atributos y reglas. Para admitir el seguimiento de requisitos de datos adicionales, puede modificar un campo existente o agregar un campo personalizado. Por ejemplo, puede personalizar la lista de selección de un menú desplegable, agregar una regla para especificar un valor predeterminado o para restringir el valor que puede tomar, o cambiar un atributo de campo.

Para agregar reglas de campo, agregar un campo personalizado o cambiar la etiqueta de un campo de un formulario de elemento de trabajo, debe modificar la definición XML del tipo de elemento de trabajo (WIT). Para cambiar un atributo de campo o cambiar el nombre de un campo, utilice la herramienta de línea de comandos witadmin.

Nombres, atributos y reglas de definición de campo

Personalizar una lista de selección

Las listas de selección son valores enumerados que aparecen en un menú desplegable de un formulario de elemento de trabajo y en la columna Valor del editor de consultas. El método que se utiliza para personalizar una lista desplegable varía en función del campo.

Campos numéricos enteros o de cadena genéricos

Para modificar la lista de selección de la mayoría de campos numéricos enteros o de cadena incluidos en un formulario de elemento de trabajo, modifique la definición de WIT. Por ejemplo, para agregar un campo personalizado Resolución y una lista de selección, especifique el código XML que se muestra a continuación.



Campo personalizado y lista desplegable

Lista de selección de un campo personalizado
<FIELD name="Resolution" refname="MyCompany.Resolution" type="String">    
<ALLOWEDVALUES>
   <LISTITEM value="By Design" />
   <LISTITEM value="Duplicate" />
   <LISTITEM value="External" />
   <LISTITEM value="Fixed" />
   <LISTITEM value="Not Repro" />
   <LISTITEM value="Postponed" />
   <LISTITEM value="Won’t Fix" />
</ALLOWEDVALUES>
</FIELD>

Las reglas permiten combinar listas, limitar los elementos a los que se aplica una lista y definir las condiciones que establecen cuándo aparece una lista en el formulario de elemento de trabajo. Las reglas controlan si una lista de distribución se expande para mostrar los miembros individuales o si una lista se filtra utilizando los atributos opcionales expanditems y filteritems. Utilice listas globales para minimizar el trabajo necesario para actualizar una lista compartida entre WIT o proyectos de equipo.

Para obtener más información, vea Definir listas de selección y Definir listas globales.

Campos específicos cuyas listas se definen de otra forma

Para modificar las listas de selección de los siguientes campos, vea el tema correspondiente:

Para los demás campos que tengan listas de selección asociadas, como Actividad, Estado de automatización, Disciplina, Prioridad, entre otros, puede buscar sus definiciones en el índice de los campos del elemento de trabajo.

Agregar reglas a un campo

Para agregar un campo personalizado o agregar reglas a un campo, modifique la definición de WIT. Puede limitar las reglas que se van a aplicar a grupos o usuarios concretos. La mayoría de las reglas admiten los atributos for o not para determinar a quién se aplica la regla y a quién no.

Por ejemplo, con el siguiente fragmento de código, puede aplicar la regla que establece que solo los miembros del equipo de administración (un grupo de TFS definido por el cliente) pueden modificar el campo Rango en la pila una vez que se ha creado un elemento de trabajo.

<FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">
   <FROZEN not="[project]\Management Team" />
   <HELPTEXT>Work first on items with lower-valued stack rank. Set in triage.</HELPTEXT>
</FIELD>

Tendrá que aplicar reglas para realizar las acciones siguientes:

Para realizar esta acción:

Use este elemento XML:

Especificar una información sobre herramientas.

HELPTEXT

Calificar el valor que un campo puede tener.

CANNOTLOSEVALUE, EMPTY, FROZEN, NOTSAMEAS, READONLY y REQUIRED

Copiar un valor o especificar un valor predeterminado.

COPY, DEFAULT y SERVERDEFAULT

Restringir quién puede modificar un campo.

VALIDUSER, atributos de reglas de campo for y not

Exigir la coincidencia de patrones en un campo de cadena.

MATCH

Aplicar reglas condicionales en función de los valores de otros campos.

WHEN, WHENNOT, WHENCHANGED y WHENNOTCHANGED

Para obtener más información sobre la aplicación de reglas de campos, vea Referencias de todos los elementos FIELD de XML.

Edite el archivo de definición XML de WIT para agregar reglas o para agregar un campo personalizado

Para agregar reglas o agregar un campo personalizado, exporte, modifique e importe de nuevo el archivo de definición de WIT.

Proceso de personalización de un objeto WIT

Con witadmin, puede importar y exportar los archivos de definición. Otras herramientas que puede utilizar son el editor de procesos, disponible con la descarga de las herramientas avanzadas de TFS, o el administrador de proyectos de equipo de TFS, un proyecto de recursos de la comunidad disponible en CodePlex.

Cualquier campo que desee utilizar para el seguimiento de los datos deberá agregarse al archivo de definición de WIT. Esto es así en todos los campos salvo en los del sistema (campos cuyo nombre de referencia comienza por System.), que se definen automáticamente en cada WIT.

Si desea agregar un campo personalizado, modifique la definición de WIT para agregar un elemento FIELD en la sección FIELDS y un elemento Control en la sección FORM.

Para agregar un campo personalizado

  1. Si no tiene permisos de administrador del proyecto de equipo, obténgalos.

  2. Abra una ventana de símbolo del sistema donde esté instalado Visual Studio o Team Explorer y escriba:

    cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE

    En una edición de 64 bits de Windows, reemplace %programfiles% por %programfiles(x86)%. Puede descargar Team Explorer gratis.

  3. Exporte la definición de WIT.

    witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"

    Un ejemplo de DirecciónURLDeColección es http://fabrikamprime:8080/tfs/ColecciónPredeterminada.

  4. Busque la sección del archivo XML que empieza por FIELDS donde se definen los campos del tipo correspondiente.

  5. Agregue el elemento FIELD que especifica el nombre del campo personalizado que se va a agregar. Debe especificar los siguientes atributos obligatorios: name (nombre descriptivo), refname (nombre de referencia) y type. Para obtener más información, consulta Referencia de elemento FIELD (Definición).

    El código siguiente especifica el campo personalizado Requestor, con un nombre de referencia FabrikamFiber.MyTeam.Requestor y una lista desplegable de valores permitidos, cuyo valor predeterminado es Customer.

    <FIELD name="Requestor" refname="FabrikamFiber.MyTeam.Requestor" type="String" reportable="Dimension">
       <ALLOWEDVALUES>
          <LISTITEM value="Customer" />
          <LISTITEM value="Executive Management" />
          <LISTITEM value="Other" />
          <LISTITEM value="Support" />
          <LISTITEM value="Team" />
          <LISTITEM value="Technicians" />
          <DEFAULTVALUE value="Customer" />
        </ALLOWEDVALUES>
    </FIELD>
    
    SugerenciaSugerencia

    Los elementos de la lista siempre aparecen en orden alfanumérico, independientemente de cómo los especifique en el archivo de definición XML.

    El nombre de la referencia, o refname, es el nombre de programación para el campo.Las demás reglas deberían hacer referencia a este refname.Para obtener más información, consulta Convenciones de nomenclatura para objetos de seguimiento de elementos de trabajo.

  6. Agregue el elemento Control en la sección FORM para que el campo personalizado aparezca en el formulario dentro del grupo de elementos en el que desea que aparezca.

    Por ejemplo, en el fragmento de código siguiente, el campo Requestor se agrega para que aparezca debajo del campo Reason en el formulario de elemento de trabajo.

    <Column PercentWidth="50">
       <Group Label="Status">
          <Column PercentWidth="100">
             <Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&amp;gned To:" LabelPosition="Left" />
             <Control FieldName="System.State" Type="FieldControl" Label="&amp;State:" LabelPosition="Left" />
             <Control FieldName="System.Reason" Type="FieldControl" Label="Reason:" LabelPosition="Left" ReadOnly="True" />
             <Control FieldName="FabrikamFiber.MyTeam.Requestor" Type="FieldControl" Label="Requestor:" LabelPosition="Left" ReadOnly="True" />
          </Column>
       </Group>
    </Column>
    
    SugerenciaSugerencia

    La definición del esquema para el seguimiento de elementos de trabajo establece todos los elementos secundarios del elemento FORM con la convención Camel y los demás elementos en mayúsculas.Si se producen errores al validar los archivos de definición de tipos, compruebe la estructura del uso de mayúsculas y minúsculas en sus elementos.También, la estructura del uso de mayúsculas y minúsculas en las etiquetas de apertura y cierre deben ajustarse a las reglas sintácticas de XML.

    Para obtener más información, consulta Referencia del elemento Control de XML.

  7. Importe el archivo de definición de WIT.

    witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"

  8. Abra TWA o Team Explorer para ver los cambios. Si el cliente ya está abierto, actualice la página.

    En la siguiente ilustración se muestra cómo ahora el formulario del elemento de trabajo pendiente del producto contiene ahora el nuevo campo.

    Campo personalizado agregado al formulario y definición de tipo

Para obtener más información acerca de cómo usar witadmin, vea Importar, exportar y administrar tipos de elementos de trabajo [witadmin].

Para cambiar la etiqueta de campo de un formulario de elemento de trabajo

  1. Exporte el archivo de definición de WIT.

    witadmin exportwitd /collection:CollectionURL /p:ProjectName /n:TypeName /f:"DirectoryPath/FileName.xml"

  2. En las secciones FORM y Layout, busque la definición del campo que desea modificar. En este ejemplo, se modifica la etiqueta del campo Título:

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title" LabelPosition="Left" />
    </Column>
    
  3. Cambie la etiqueta del campo para que la sucursal portuguesa que trabaja en este proyecto de equipo concreto pueda leer el nombre del campo Title cuando trabaje con el formulario del elemento de trabajo. Incluya la palabra "Portuguesa" como título en el campo Título.

    <Column PercentWidth="70">
      <Control Type="FieldControl" FieldName="System.Title" Label="Title (Título):" LabelPosition="Left" />
    </Column>
    
  4. Importe el archivo de definición de WIT.

    witadmin importwitd /collection:CollectionURL /p:ProjectName /f:"DirectoryPath/FileName.xml"

Cambiar un atributo de un campo existente

Debe usar witadmin changefield para cambiar los atributos de un campo existente. Por ejemplo, el comando siguiente cambia el nombre descriptivo definido para MyCompany.Type por Método de evaluación.

witadmin changefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.Type /name:"Evaluation Method"

En la tabla siguiente se resumen los atributos que se pueden cambiar utilizando witadmin changefield.

Atributo

Descripción 

Tipo de datos

Especifica el tipo de datos que acepta el campo. En general, no se puede cambiar el tipo de datos del campo una vez definido. Solo se puede cambiar el tipo de datos del campo para los campos del tipo HTML o PlainText.

Nombre descriptivo

El nombre descriptivo aparece en los menús desplegables de las consultas de elementos de trabajo y debe ser único en todos los campos definidos en una colección de proyectos de equipo. Dicho nombre puede ser diferente de la etiqueta de formulario que aparece en el formulario del elemento de trabajo.

Indizable

Puede habilitar la indización de un campo para mejorar los tiempos de respuesta de consulta al filtrar por dicho campo. De forma predeterminada, se indizan los campos siguientes: Asignado a, Fecha de creación, Modificado por, Estado, Motivo, Identificador de área, Id de iteración y Tipo de elemento de trabajo.

Atributos para informe

Puede cambiar el nombre del campo que aparece en un informe, el nombre de referencia del informe y el tipo de informe. Puede localizar el nombre descriptivo del informe.

El tipo de informe determina si los datos del campo se escriben en la base de datos de almacén relacional, en la base de datos de almacén relacional y en el cubo OLAP, o si se usan para generar una suma calculada previamente de valores al procesar el cubo OLAP.

Para obtener una lista completa de los campos para informes predeterminados, vea Referencia de campos para informe para Visual Studio ALM. Para obtener más información acerca del cubo OLAP, vea Perspectivas y grupos de medidas proporcionados en el cubo de Analysis Services para Visual Studio.

Sincronización

Puede habilitar o deshabilitar la sincronización con Active Directory para los campos asociados a cuentas de usuario.

Preguntas y respuestas

P: ¿Qué personalizaciones puedo realizar que sigan utilizando el asistente para Configurar características con el fin de actualizar mi proyecto de equipo tras una actualización de TFS?

R: Puede agregar campos personalizados, personalizar una lista de selección, agregar o modificar rutas de acceso de áreas e iteraciones y agregar reglas a un campo. El asistente para Configurar características actualizará sus proyectos de equipo, y obtendrá acceso a las últimas características.

Para obtener información sobre qué otras personalizaciones puede realizar con seguridad y cuáles debe evitar, consulte Personalizar la experiencia de seguimiento del trabajo: Antes de realizar la personalización, debe entender las implicaciones de esta en el mantenimiento y la actualización.

P: ¿Dónde puedo obtener información sobre todos los campos y atributos de campo que ya están definidos en mi proyecto de equipo?

R: Para consultar un índice de los campos definidos en las plantillas de proceso predeterminadas de TFS, vea Referencia de campos de elementos de trabajo para Visual Studio ALM.

Además de los atributos que puede cambiar en un campo de elemento de trabajo, hay varios atributos que no se pueden modificar y que prácticamente están ocultos en todos los campos. Puede buscar las asignaciones de estos campos utilizando el Explorador de campos de elementos de trabajo. Puede acceder a esta herramienta desde la herramienta avanzada Editor de procesos después de instalar las herramientas avanzadas de TFS.

Explorador de campos de elementos de trabajo

Explorador de campos de los elementos de trabajo

Para ver una descripción de cada atributo, vea esta publicación: Atributos de campo de los elementos de trabajo: qué puede y qué no puede cambiar.

P: ¿Cómo puedo agregar un campo que admita la integración con el control de pruebas, compilación y versiones?

R: Algunos WIT contienen campos que proporcionan información que se genera en los procesos automatizados que se integran con Team Foundation Build, Microsoft Test Manager y el control de versiones de Team Foundation. Para agregar uno de estos campos a los WIT personalizados, debe modificar la definición de WIT siguiendo los pasos que se indican más arriba en este tema.

Por ejemplo, puede agregar los campos Encontrado en e Integrado en la compilación que aparecen en las definiciones de tipos de errores. Estos campos asocian errores con las compilaciones en las que se encontraron o corrigieron. Puede utilizar el siguiente fragmento de código para agregar estos campos a una definición de tipo de elemento de trabajo.

<FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
    <HELPTEXT>Product build number (revision) in which this item was found</HELPTEXT>
</FIELD>
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
    <HELPTEXT>Product build number this bug was fixed in</HELPTEXT>
</FIELD>

Para obtener más información, consulta Campos para la integración con Test, Build y control de versiones.

P: ¿Cuándo debo utilizar una lista global en lugar de una simple lista desplegable?

R: Cuando usa una lista en varios WIT o entre varios proyectos de equipo, si la mantiene como una lista global, minimiza los requisitos de mantenimiento. Además, si es necesario hacer que partes de las listas aparezcan de forma distinta en los WIT o proyectos de equipo, puede definir una lista global para una parte de una lista desplegable. Vea Definir listas de selección y Definir listas globales.

R: ¿Existen restricciones al modificar los campos del sistema?

R: Sí. No puede cambiar el nombre de los campos del sistema ni aplicarles algunas reglas. Por ejemplo, no puede copiar o ni dejar vacíos los campos que se usan para hacer un seguimiento de quién creó, modificó o cerró un elemento de trabajo ni los campos de fecha y hora que usa el sistema.

Los nombres de los campos del sistema comienzan con el prefijo "system" (por ejemplo, System.ID). Todos los campos del sistema se definen para todos los WIT, tanto si están incluidos en la definición de WIT como si no lo están. Para obtener más información sobre cada campo, vea Referencia de campos de elementos de trabajo para Visual Studio ALM.

P: ¿Las reglas se evalúan con algún orden?

R: Sí. Sin embargo, hay varios factores que afectan al modo en que el sistema evalúa varias reglas, de modo que el resultado final no siempre puede conocerse a priori. Para tener una idea del comportamiento esperado y de las interacciones, vea Aplicar reglas a un campo de elemento de trabajo.

P: ¿Qué nombre debo asignar a los campos para permitir la generación de informes?

R: Puede agregar cambios o modificar los atributos de los campos existentes para admitir la generación de informes. Al agregar o cambiar los campos, debería asignarles nombres de forma sistemática para encontrar el campo en el cubo de Analysis Services, porque los campos se agrupan en carpetas de manera lógica. Para obtener más información, vea Agregar o modificar campos de elementos de trabajo para admitir la creación de informes.

P: ¿Hay alguna forma de limitar el número de nombres que aparecen en el campo Asignado a?

R: Sí. De forma predeterminada, en el menú desplegable del campo Asignado a se muestran todos los usuarios a los que se concedió acceso a TFS. Este es el grupo predeterminado de usuarios válidos. La excepción a esta regla es que en Team Web Access, los menús contextuales que admiten la asignación de elementos de trabajo están limitados a los miembros del equipo.

La manera más eficaz de aplicar restricciones de seguridad es crear grupos personalizados que se administren en Windows o en TFS.

  1. Cree el grupo de seguridad que desea utilizar y agregue las cuentas al grupo. Por ejemplo, cree un nuevo grupo denominado Colaboradores de equipo. Consulta Agregar usuarios a proyectos de equipo.

  2. Modifique el archivo de definición de cada tipo de elemento de trabajo para el que desee restringir el conjunto de usuarios. Agregue el elemento VALIDUSER a la definición del elemento FIELD para el campo Asignado a y especifique el grupo de TFS.

    Por ejemplo, el siguiente fragmento de código se puede agregar a la definición de tarea para restringir el conjunto de usuarios del campo Asignado a solo los miembros del equipo agregados al grupo de tareas de TFS.

    <FIELD name="Assigned To" refname="System.AssignedTo" type="String" reportable="dimension" syncnamechanges="true">
       <HELPTEXT>The person currently working on this task</HELPTEXT>
       <ALLOWEXISTINGVALUE />
       <VALIDUSER group="Team Contributors" />
    </FIELD>
    

    Cuando especifica el elemento ALLOWEXISTINGVALUE, evita los errores de validación que, de lo contrario, se producirían cuando los miembros dejen el equipo y ya no estén registrados como colaboradores del proyecto.

P: ¿Cómo agrego controles personalizados a un campo?

R: Con el modelo de objetos para el seguimiento de elementos de trabajo, puede crear, cambiar y buscar errores, tareas y otros WIT mediante programación. También puede crear su propios controles personalizados que agreguen funcionalidad a un formulario de elemento de trabajo.

Por ejemplo, puede agregar los siguientes controles personalizados, que están disponibles a través del proyecto de CodePlex Controles personalizados para el seguimiento de elementos de trabajo de TFS:

  • Control de captura de pantalla que permite cortar y pegar imágenes en un campo HTML.

  • Control de explorador web que permite al usuario hospedar una página web y pasar valores de campo a dicha página.

  • Control de valores múltiples que admite la entrada de varios valores en un campo mostrando una lista de casillas.

P: ¿Cómo cambio las asignaciones de campos que admiten la integración entre Project y TFS?

R: Los proyectos de equipo creados a partir de una plantilla de proceso de TFS predeterminada incluyen un archivo de asignación de proyectos de Microsoft predeterminado. Si usa Project para planear y hacer un seguimiento de los elementos de trabajo almacenados en TFS, puede ser necesario asignar campos adicionales de Project o cambiar la manera en que se publica y actualiza un campo de TFS. Puede hacerlo personalizando el archivo de asignación de Microsoft Project.

Para obtener información sobre el uso de Project con elementos de trabajo de TFS, vea Crear un registro de trabajo pendiente y tareas mediante Project.

P: ¿Cuál es la mejor manera de administrar un gran número de campos personalizados?

R: Si necesita agregar un gran número de campos personalizados que se usarán en varios WIT o en diversos proyectos de equipo, utilice un flujo de trabajo global. Puede simplificar las operaciones de mantenimiento manteniendo el conjunto global de campos y listas de selección mediante el flujo de trabajo global. Consulta Referencia de elementos XML para flujos de trabajo globales.

P: ¿Cómo elimino un campo?

R: Al quitar un campo de un tipo de elemento de trabajo concreto, el campo no se quita de la colección ni del servidor de bases de datos, aunque no haya ningún WIT que haga referencia a él. Para quitar un campo, siga estos pasos.

  1. Quite la definición de FIELD de todas las definiciones de WIT y los flujos de trabajo globales en los que se haga referencia a ella.

  2. Compruebe que el campo no está en uso. Por ejemplo:

    witadmin listfields /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
    Field: MyCompany.CustomContact
    Name: Custom Contact
    Type: String
    Reportable As: dimension
    Use: Not In Use
    Indexed: False
    
  3. Elimine el campo. Por ejemplo:

    witadmin deletefield /collection:http://AdventureWorksServer:8080/tfs/DefaultCollection /n:MyCompany.CustomContact
    
  4. Si el campo eliminado se podía incluir en informes, deberá recompilar el almacenamiento de datos para purgar el campo anterior y sus valores.

Para obtener más información, consulta Administrar campos de elementos de trabajo [witadmin].

P: ¿Qué otras áreas se pueden personalizar?

R: Vea Visión de un extremo a otro sobre lo que se puede configurar y personalizar en Visual Studio TFS.

P: ¿Dónde puedo ir si tengo más preguntas?

R: Para buscar respuestas o publicar una pregunta, visite el foro: Team Foundation Server - Administración de proyectos y elementos de trabajo.