archivos mensuales: Noviembre 2007

No se puede batir alcance de SharePoint

Durante los últimos dos días, He participado en dos reuniones durante el cual presentaron los resultados de un proyecto de SharePoint. El CIO y su equipo se unió a la primera reunión. Es estándar y no especialmente notables. El Departamento de informática participa obviamente en una implementación de empresa de cualquier proyecto de tecnología. La segunda reunión ampliada para incluir un V.P. desde el marketing, varios directores que representan HR, Logística, Fabricación, Proyectos de capital, Calidad, Compra, Desarrollo corporativo y otros departamentos (algunos de los cuales no estaban directamente implicados en la fase actual). Es una poderoso gran audiencia.

En mi vida anterior, He trabajado principalmente en proyectos ERP y CRM. Ambos tienen un dominio de solución bastante amplia pero no tan amplia como SharePoint. Para realizarse plenamente, Proyectos de SharePoint legítimamente y necesariamente llegar a cada rincón y grieta de una organización. ¿Cuántas otras soluciones empresariales tienen que tipo de alcance? No hay muchos.

SharePoint claramente representa una gran oportunidad para aquellos lo suficientemente afortunados como estar en este espacio. Ofrece una gran oportunidad técnica (que de alguna manera se da vuelta sobre su cabeza aquí bajo "Tecnologías usted debe dominar"). Pero aun mejor, SharePoint nos expone a una extensa y amplia gama de procesos de negocio a través de estos contratos. ¿Cuántos especialistas en CRM trabajan con la parte de fabricación de la empresa? ¿Cuántos consultores ERP trabajan con recursos humanos en adquisición de talento? SharePoint es superior a ambos.

Como cualquier cosa, No es perfecto, Pero es un muy buen lugar para estar.

Por el amor de [llenar en su ser persona superior más queridos], no cambie el ' título’ columna de sitio.

En el Foros de SharePoint, de vez en cuando alguien pregunta sobre "cambiar la etiqueta de título" o sobre "quitar título de listas".

Línea inferior: No lo hagas!

Lamentablemente, la interfaz de usuario permite un cambio unidireccional de esa etiqueta de columna como se muestra:

imagen

Título es una columna asociada al elemento"" tipo de contenido. Muchos, muchos, muchos CT utiliza esta columna y si cambias aquí, ondas hacia fuera por todas partes. Hay una buena oportunidad que usted no tenía la intención de que esto suceda. Usted probablemente estaban pensando a sí mismo, "Tengo una lista de búsqueda personalizada y ' título’ No tiene ningún sentido como un nombre de columna, así que voy a cambiarlo a ' código de estado’ y añadir una columna de descripción." Pero si usted sigue ese pensamiento y cambiar el nombre de ' título’ al 'Código de estado', título de cada lista (incluyendo las bibliotecas de documentos) cambios al código de estado"" y tú probablemente No pienso que eso pasara.

El verdadero problema es que se trata de un cambio unidireccional. La interfaz de usuario "sabe" ese título"" es una palabra reservada. Por lo tanto, Si tratas de cambiar "Status Code" volver a "Título", te evitará y ahora tienes pintado a sí mismo en una esquina using paint that never dries 🙂

¿Qué pasa si ya lo cambiaste? No he visto la respuesta que todos queremos, que es un método simple y fácil para cambiar la etiqueta de 'Título'. Ahora mismo, el mejor Consejo es cambiarlo a algo como "Doc/artículo título". Es una etiqueta lo suficientemente genérica que puede no ser demasiado discordante para sus usuarios.

Tengo algunas otras ideas que están en mi lista de cosas a la investigación:

  • Póngase en contacto con Microsoft.
  • Hacer algo con el modelo de objetos, Tal vez en conjunción con una característica.
  • Descifrar el esquema de base de datos y actualizar manualmente SQL. (Usted debe contactar a Microsoft antes de hacerlo aunque; es probable que se anulará el contrato de soporte).

Si alguien sabe como solucionar esto, por favor enviar un comentario.

Actualización final de la tarde, 11/15: He encontrado este enlace que describe un método para crear un tipo de lista que no tiene un columna de título: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF y tu amigo, CDATA

He notado algo torpe e innecesario mano-codificación de RdbCommandText en algunos ejemplos (incluyendo la documentación de MSDN).

Quería señalar a los recién llegados a BDC que comandos se pueden envolver dentro de una etiqueta CDATA en natural"" forma. Por lo tanto, Esta construcción incómoda:

<Propiedad Nombre="RdbCommandText" Tipo="System.String">
SELECT dbo.MCRS_SETTLEMENT.ID, DBO.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
DONDE (ID. &gt;= @MinId) Y (ID. &lt;= @MaxId)
</Propiedad>

puede ser mejor representado de esta manera:

<Propiedad Nombre="RdbCommandText" Tipo="System.String">
<![CDATA[
SELECT dbo.MCRS_SETTLEMENT.ID, DBO.MCRS_SETTLEMENT.Settlement de dbo.MCRS_SETTLEMENT
DONDE (ID. >= @MinId) Y (ID. <= @MaxId)
]]>
</Propiedad>

</final>

Cartilla BDC

Introducción a BDC

Ejemplo funcional: ADF de BDC que se conecta a la base de datos SQL incrustado seudónimo y contraseña

Necesitaba conectar MOSS a una base de datos SQL vía BDC. Para propósitos de prueba/POC, Quería integrar el SQL cuenta usuario id y contraseña en el ADF. A partir de Esta plantilla (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), He creado un Ada que se conecta a una determinada instancia de SQL server y registros con un id de usuario específico y una contraseña y se muestra en este fragmento de código:

  <LobSystemInstances>
    <LobSystemInstance Nombre="ClaimsInstance">
      <Propiedades>
        <Propiedad Nombre="AuthenticationMode" Tipo="System.String">PassThrough</Propiedad>
        <Propiedad Nombre="DatabaseAccessProvider" Tipo="System.String">SqlServer</Propiedad>
        <Propiedad Nombre="Origen de datos de RdbConnection" Tipo="System.String">instancia de serveractual real</Propiedad>
        <Propiedad Nombre="Catálogo inicial de RdbConnection" Tipo="System.String">catálogo inicial real</Propiedad>
        <Propiedad Nombre="RdbConnection seguridad integrada" Tipo="System.String">SSPI</Propiedad>
        <Propiedad Nombre="Agrupación de RdbConnection" Tipo="System.String">falso</Propiedad>

        <!-- Estos son los valores de clave: -->
        <Propiedad Nombre="ID de usuario de RdbConnection" Tipo="System.String">unEAL ID de usuario</Propiedad>
        <Propiedad Nombre="RdbConnection contraseña" Tipo="System.String">Contraseña actual</Propiedad>
        <Propiedad Nombre="RdbConnection Trusted_Connection" Tipo="System.String">falso</Propiedad>

      </Propiedades>
    </LobSystemInstance>
  </LobSystemInstances>

No es una mejor práctica, pero es útil para una configuración rápida y sencilla para la prueba. Esto era sorprendentemente difícil de averiguar. Nunca encontré un ejemplo funcional con palabras clave de búsqueda:

  • ADF incrustado ID de usuario y contraseña
  • incrustar el id de usuario y contraseña en adf
  • incrustar el id de usuario y contraseña en bdc de adf
  • cartilla de bdc de SharePoint
  • SharePoint incrustar id de usuario y contraseña en adf

</final>

Suscribirse a mi blog.

Acciones de flujo de trabajo personalizado de SPD — mejoras de manipulación de cadenas

Hace una semana, Comencé un proyecto de codeplex que proporciona un método simple y razonablemente genérico para agregar acción personalizada funciones de flujo de trabajo diseñador SharePoit. Se describe aquí: http://www.codeplex.com/spdwfextensions. Más allá de simplemente proveer un marco, también pretende proporcionar un conjunto de funciones útiles que harán más útil/flexible/poderoso SPD.

Aquí están las actuales características previstas para la versión 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Si alguien tiene algún interés en este proyecto, por favor dejar un comentario o Inicio/agregar a una discusión aquí: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Aquí están el actual conjunto de funciones que han sido codificados (Aunque no está completamente probado como de 11/08/07):

Función Descripción (Si no igual.Función neto)
Num-entradas() Devuelve las números "entradas" en una cadena según un delimitador especificado.

Por ejemplo: Num-entradas en una cadena de "un,b,c" con delimitadores"," = 3.

Entrada() Devuelve el token n-ésima de una cadena según un delimitador especificado.
Longitud String.Length
Reemplazar() String.Replace()
Contiene() String.Contains()
Devuelve la palabra "verdadero" o la palabra "falso".
Subcadena(Inicio) String.substring(Inicio)
Subcadena(Inicio,final) String.substring(Inicio,final)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Devuelve la palabra "verdadero" o la palabra "falso".
EndsWith() String.EndsWith()
Devuelve la palabra "verdadero" o la palabra "falso".

Rápido & url fácil codificación utilidad de escritorio

He sido deba url-codificar algunas cadenas esta semana y abofeteó juntos una utilidad un poco que pensé que podría aguantar SkyDrive para la comunidad.

Obtener el binario aquí: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

Obtenga aquí la solución de visual studio: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Aquí hay una captura de pantalla:

imagen

Fácil y rápida: Insertar un hipervínculo en el elemento web vista de datos XSLT

ACTUALIZACIÓN (01/17/08): Esta entrada de blog habla de hipervínculo más bondad XSL: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Introducción y objetivo: Que había creado un simple gráfico de barras para servir como componente en un tablero de instrumentos. Ahorraré los detalles en la construcción de tablas para otro post, pero yo no inventó esta técnica (ni el signo de interrogación, de eso se trata). Resultó que había un error en la tabla y mientras fijo, Tomé la oportunidad de convertir algunas etiquetas en los hipervínculos que apuntaron a la lista subyacente detrás de la gráfica. Por ejemplo, hay una etiqueta con el valor "Hold". Quería convertir la etiqueta en un hipervínculo para que el usuario pudiera haga clic sobre él y perforar hasta las entradas específicas de la lista cuyo valor de estado es "Hold".

Pasos:

  1. Utilizar visual studio intellisense consciente de SharePoint.
  2. Copia XSLT del DVWP en visual studio (crear un proyecto en blanco, Agregar un archivo XSL al proyecto).
  3. Copie el vínculo que desee utilizar en el Portapapeles.
  4. Pegar en la ubicación correcta en el XSL.
  5. Convertir separadores de argumento de URL en la cadena de consulta de"&" "&gm6;"
  6. Codificar URL argumentos individuales.
  7. Ajustar ese dentro un <a href…> </un>

Ejemplo:

Tengo una dirección URL:

http://[servidor]/[sitio]/Lists/Open Positions/AllItems.aspx?Vista ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = reclutador&FilterValue1 = Hold

Convertirlo en:

     <un href="Lists/Open Positions/AllItems.aspx?Vista = % 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1% 7D&gm6;FilterField1 = reclutador&gm6;FilterValue1 = Hold"> Mantenga: </un>

He transformado manualmente el primer argumento de:

{84EEA2F5-121B-40B7-946F-0FA704A1DAA1}

Para:

%7b84EEA2F5-121B-40B7-946F-0FA704A1DAA1% 7D

(En este, las transformaciones de la llave de apertura para 7b % y el cierre llave transforma a 7% d)

Los argumentos de segundo y terceros’ parámetros ("FilterField1 =Reclutador" y "FilterValue1 =Mantenga" respectivamente) no necesita ser codificado en url porque no contienen caracteres no seguros.

Notas:

Esta técnica generalmente debe trabajar en cualquier lugar que desee incrustar un hipervínculo en XSLT donde el hipervínculo incluye como parámetros en la URL:

http://[servidor]/[sitio]/Lists/Open Positions/AllItems.aspx?Vista ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = reclutador&FilterValue1 = Hold

Tengo la misma URL por acceder a la lista personalizada y filtrado manualmente en la columna Estado (etiquetado "reclutador" por encima de).

Rápida y sencilla: Habilitar el flujo de trabajo de SharePoint Designer actualizar un formulario de InfoPath

Escenario: Tengo un formulario de InfoPath que front-end de un proceso de flujo de trabajo implementado usando SharePoint Designer. En un momento, un administrador debe aprobar el formulario de. Ya no puedo confiar historia de flujo de trabajo para cumplir mis requisitos de auditoría, Me decido a almacenar mi mensaje de auditoría directamente en el propio formulario.

Visión general:

Diseñar el formulario y publicarlo como un tipo de contenido y el formulario a una biblioteca de documentos. Marca deseada campos de formulario como actualizable de musgo. La forma está ligada al tipo de contenido y el tipo de contenido está "conectado" en una biblioteca de formularios (o muchos, Si quieres). Escribir un flujo de trabajo que actualiza el campo.

Pasos específicos:

  1. Crear una biblioteca de documentos. Esto mantendrá la plantilla de InfoPath.
  2. Crear una biblioteca de formularios.
  3. Crear el formulario de InfoPath. Incluyen un campo de texto, «Mensaje de auditoría».
  4. Publicar el formulario como un tipo de contenido (NO es un documento).
  5. Al rellenar los cuadros de diálogo de publicación:
    un) Guarde el archivo .xsn en la biblioteca de documentos (paso #1).
    b) Publicar el mensaje de auditoría"" campo y marcar cierto: "Permitir a los usuarios editar datos en este campo mediante una hoja de datos o propiedades de página".
    c) Crear un nuevo tipo de contenido y asígnele un nombre apropiado.
  6. Acceso a la biblioteca de formularios.
    un) Vaya a la configuración avanzada y habilitar la biblioteca de formularios gestionar los tipos de contenido.
    b) Seleccione el tipo de contenido recién creado (5c supra). Se agruparán bajo "Microsoft InfoPath" (o similar).
    c) Eliminar el valor predeterminado "formulario" tipo de contenido de la biblioteca.
    d) Marca la biblioteca "mostrar como página web" para que el formulario se iniciará desde SharePoint y no el cliente de la estación de trabajo de InfoPath.
  7. Volver a la biblioteca de formularios adecuada y haga clic en "nuevo" simplemente verificar que el formulario está correctamente registrado y actuando como desee.
  8. Fuego de SharePoint Designer y vaya al sitio que alberga la biblioteca de formularios (de paso 2).
  9. Crear un nuevo flujo de trabajo adjunto a la biblioteca de formularios.
  10. Añadir una sola acción "Conjunto campo de elemento actual". Usted debe esperar diseñador de SharePoint a la lista eres tu campo, «Mensaje de auditoría». Asignarle un valor.
  11. Haga clic en finalizar y volver a la biblioteca de formularios.
  12. Crear un nuevo formulario y poner algún valor de prueba en el mensaje de auditoría"" campo.
  13. Guardar y volver a la biblioteca de formularios.
  14. Con el botón derecho, Seleccione "flujo de trabajo" y puesta en marcha del flujo de trabajo.
  15. Él debe funcionar casi de inmediato. Tire hacia arriba de forma (de paso 12) y si todo ha ido al plan, "Mensaje de auditoría" se le ha asignado cualquier valor proporcionado en el paso 10.

Notas:

No todos los controles puede configurado para comunicación bidireccional. Por ejemplo, no parece aplicar un flujo de trabajo SPD que modifica los campos de texto dentro de las secciones de repetición.

Uno de los clave llevar aquí es que realmente hemos creado un tipo de contenido con una plantilla asociada. Esto también nos permite almacenar múltiples plantillas de formulario de InfoPath en la misma biblioteca de forma.

Esto requiere servidor de formas. Seguramente no va a trabajar en un WSS 3.0 medio ambiente y probablemente incluso requiere un entorno SharePoint Enterprise.

El Beagle ha aterrizado (Octubre 2007 tema)

(Esto es en realidad un poco anticuado, Pero como mi lema favorito de bomberos proclama, "Más vale tarde que nunca").

Compruébalo aquí: http://www.sharepointbeagle.com/

Si no lo ha hecho, Asegúrese de Únete.

Claro, Asegúrese de leer mi artículo sobre un proyecto de SharePoint del mundo real (incluyendo la definición de requisitos, De KPI, tipos de contenido, tableros de instrumentos y más) así como mi colega artículo sobre el elemento web consulta de contenido.

También hay muchas otras cosas buenas..

¿Cómo quitar “Ver todo el contenido de sitio” enlace

Me preguntan esta pregunta casi cada semana, normalmente en el contexto de una discusión de seguridad. Un creador de sitio administrador ha provisionado un sitio, seguridad configurado, web dispuesto partes y modificado para requisitos particulares del lanzamiento rápido para proporcionar ese conjunto de oh-tan-perfecta de opciones al usuario final. Pero, fuera de la caja, No es posible eliminar el "ver todo el contenido de sitio" enlace.

Mark Wagner da la respuesta aquí (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). Su escritura es genial en dos niveles. Proporciona una respuesta a la pregunta, "Cómo puedo quitar la vista de todo el contenido del sitio" enlace? A continuación, responde a la pregunta siguiente inmediata: ¿Cómo habilito la vista todo el contenido de sitio enlace sobre una base de sitio por sitio de fácilmente?

Como un bono: Su enfoque funciona para WSS, No sólo MOSS.

</final>

Suscribirse a mi blog!