arquivos mensuais: Novembro 2007

Non pode bater Alcance do SharePoint

Durante os últimos dous días, I have participated in two meetings during which we presented the results of a SharePoint project. The CIO and his team joined the first meeting. That’s standard and not especially notable. The IT department is obviously involved in an enterprise rollout of any technology project. The second meeting expanded to include a V.P. de marketing, varios directores que representan HR, Loxística, Fabricación, Proxectos de Capital, Calidade, Adquisitivo, Desenvolvemento corporativo e outros departamentos (algúns dos cales nin sequera foron directamente implicados na fase actual). That’s a mighty wide audience.

Na miña vida anterior, I primarily worked on ERP and CRM projects. They both have a fairly wide solution domain but not as wide as SharePoint. To be fully realized, SharePoint projects legitimately and necessarily reach into every nook and cranny of an organization. How many other enterprise solutions have that kind of reach? Not many.

SharePoint clearly represents an enormous opportunity for those of us fortunate enough to be in this space. It provides a great technical opportunity (que é dalgún xeito ligado a súa cabeza aquí under "Technologies You Must Master"). But even better, SharePoint exposes us to an extensive and wide range of business processes through these engagements. How many CRM specialists work with the manufacturing side of the company? How many ERP consultants work with human resources on talent acquisition? SharePoint exceeds them both.

Como calquera cousa, non é perfecto, pero é un lugar maldito bo para ser.

Polo amor de [cubrir a súa persoa máis querida / ser superior], don’t change the ‘Title’ columna de sitio.

No SharePoint foros, someone occasionally asks about "changing the label of Title" or about "removing title from lists".

Bottom line: Non faga iso!

Desafortunadamente, a interfaz de usuario permite un cambio de sentido único de que etiqueta da columna, como se mostra:

imaxe

Title is a column associated with the "Item" tipo de contido. Moitos, moitos, moitos CT empregar esta columna e se cambiar isto aquí, it ripples out everywhere. There’s a good chance that you didn’t intend for that to happen. You were probably thinking to yourself, "I have a custom lookup list and ‘Title’ simplemente non ten sentido como un nome de columna, so I’m going to change it to ‘Status Code’ and add a description column." But if you follow through on that thought and rename ‘Title’ to ‘Status Code’, todos os títulos da lista (incluíndo bibliotecas de documentos) changes to "Status Code" e probablemente non tiña a intención para que isto ocorre.

O problema real é que se trata dun cambio de sentido único. The UI "knows" that "title" is a reserved word. Así, if you try and change "Status Code" back to "Title", vai evitar que e agora se retratado nun canto usando tinta que nunca seca 🙂

Entón o que pasa se xa cambiou? I haven’t seen the answer we all want, which is a simple and easy method to change the label back to ‘Title’. Right now, the best advice is to change it to something like "Doc/Item Title". That’s a generic enough label that may not be too jarring for your users.

Eu teño algunhas outras ideas que están na miña lista de cousas a facer cousas para a investigación:

  • Contacta Microsoft.
  • Fai algo co modelo de obxecto, quizais xunto cunha característica.
  • Descubrir o esquema da base de datos e actualizar manualmente SQL. (Ten que contactar coa Microsoft antes de facelo; el probabelmente vai anular o seu contrato de soporte).

Se alguén sabe como solucionar isto, por favor publicar un comentario.

Actualiza final da tarde, 11/15: Descubrín esta conexión que describe un método para crear un tipo de lista que non ten unha columna de título: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

BDC ADF eo seu amigo, CDATA

Teño notado algúns estraña e innecesaria man codificación de RdbCommandText en algúns exemplos (incluíndo a documentación MSDN).

I wanted to point out to newcomers to BDC that commands can be wrapped inside a CDATA tag in their "natural" form. Así, esta construción estraño:

<Propiedade Nome="RdbCommandText" Tipo="System.String">
Seleccione dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement de dbo.MCRS_SETTLEMENT
ONDE (ID &gt;= @MinId) E (ID &lt;= @ MaxId)
</Propiedade>

pode ser mellor representado desta forma:

<Propiedade Nome="RdbCommandText" Tipo="System.String">
<![CDATA[
Seleccione dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.settlement de dbo.MCRS_SETTLEMENT
ONDE (ID >= @MinId) E (ID <= @ MaxId)
]]>
</Propiedade>

</final>

Exemplo BDC

Introdución á BDC

Exemplo Funcional: BDC ADF que se conecta á base de datos SQL ID de usuario e contrasinal incorporado

I needed to wire up MOSS to a SQL database via BDC. For testing/POC purposes, I wanted to embed the SQL account user id and password in the ADF. Starting with este modelo (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Creei un ADF que se conecta a unha instancia do servidor SQL particular e troncos cun determinado ID de usuario e contrasinal e mostra neste tramo:

  <LobSystemInstances>
    <LobSystemInstance Nome="ClaimsInstance">
      <Propiedades>
        <Propiedade Nome="AuthenticationMode" Tipo="System.String">PassThrough</Propiedade>
        <Propiedade Nome="DatabaseAccessProvider" Tipo="System.String">SqlServer</Propiedade>
        <Propiedade Nome="RdbConnection fonte de datos" Tipo="System.String">real do servidor  instancia real</Propiedade>
        <Propiedade Nome="RdbConnection Initial Catalog" Tipo="System.String">catálogo de inicio real</Propiedade>
        <Propiedade Nome="RdbConnection Seguridade Integrada" Tipo="System.String">SSPI</Propiedade>
        <Propiedade Nome="RdbConnection pooling" Tipo="System.String">teito</Propiedade>

        <!-- Estes son os valores de chave: -->
        <Propiedade Nome="RdbConnection ID do usuario" Tipo="System.String">unctual ID do usuario</Propiedade>
        <Propiedade Nome="RdbConnection contrasinal" Tipo="System.String">Contrasinal real</Propiedade>
        <Propiedade Nome="Trusted_Connection RdbConnection" Tipo="System.String">teito</Propiedade>

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

Non é unha boa práctica, but it’s useful for a quick and simple configuration for testing. This was surprisingly difficult to figure out. I never found a functional example with search keywords:

  • ADF incorporado usuario e contrasinal
  • inserir ID de usuario e contrasinal no ADF
  • inserir ID de usuario e contrasinal no ADF BDC
  • SharePoint BDC cartilla
  • SharePoint incorporar ID de usuario e contrasinal no ADF

</final>

Rexístrate para o meu blog.

Fluxo de traballo do SPD accións personalizadas — manipulación de melloras cordas

Preto de unha semana, I started up a codeplex project that provides a simple and reasonably generic method for adding custom action functions to SharePoit Designer workflow. It’s described here: http://www.codeplex.com/spdwfextensions. Beyond simply providing a framework, it also aims to provide a set of useful functions that will make SPD more useful/flexible/powerful.

Aquí están os recursos planeados para a versión actual 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Se alguén ten algún interese neste proxecto, por favor, deixe un comentario ou iniciar / engadir a un debate aquí: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Aquí están o actual conxunto de funcións que foron codificados (aínda que non sexa totalmente probado desde 11/08/07):

Función Descrición (se non mesmo. función Net)
Nun-entradas() Volta o número "entradas" in a string as per a specified delimiter.

Por exemplo: Num-entries in a string "a,b,c" with delimiter "," = 3.

Entrada() Returns the nth token in a string as per a specified delimiter.
Lonxitude String.length
Substituír() String.Replace()
Contén() String.Contains()
Returns the word "true" or the word "false".
Substring(comezar) String.substring(comezar)
Substring(comezar,final) String.substring(comezar,final)
ToUpper() String.toupper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returns the word "true" or the word "false".
EndsWith() String.EndsWith()
Returns the word "true" or the word "false".

Rápido & fácil url utilidade escritorio Encoding

Eu teño a necesidade url codificar unhas cordas esta semana e bateu xuntos pouca utilidade á que eu penso que eu ía pór en SkyDrive á comunidade.

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

Obteña a solución visual studio aquí: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Aquí está unha captura de pantalla:

imaxe

Fácil e rápida: Inserir unha Ligazón vistas datos web Part XSLT

Actualización (01/17/08): Este blog fala sobre a entrada de máis bondade Ligazón XSL: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Descricións e Obxectivo: I had created a simple bar chart to serve as component on a dashboard. I’ll save the details on building charts for another post, pero eu non inventei esa técnica (nin punto de interrogação, para que o asunto). It turned out there was a bug in the chart and while I fixed that, I took the opportunity to convert some labels into hyperlinks that pointed at the underlying list behind the graph. Por exemplo, there is a label with value "Hold". I wanted to turn the label into a hyperlink so that the user could click on it and drill down to the specific entries in the list whose status value is "Hold".

Pasos:

  1. Use visual studio para intellisense SharePoint-aware.
  2. Pega XSLT do DVWP en Visual Studio (crear un proxecto en branco, engadir un ficheiro XSL ao proxecto).
  3. Copie a ligazón que quere empregar para o portapapeis.
  4. Pegalo no lugar seguro no XSL.
  5. Convert URL argument separators on the query string from "&" to "&ampères;"
  6. Url-ENCODE argumentos individuais.
  7. Enrole que dentro dun <a href…> </un>

Exemplo:

Eu teño un URL:

http://[servidor]/[local]/Lists / Open% 20Positions/AllItems.aspx?Ver ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&= FilterValue1 Manteña

Eu convertelo en:

     <un href="Lists / Open% 20Positions/AllItems.aspx?Ver =% 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1}&ampères;FilterField1 = Recruiter&ampères;= FilterValue1 Manteña"> Manter: </un>

Eu transformei man o primeiro argumento de:

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

para:

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

(Neste, a clave aberta transfórmase% 7b ea clave de peche transforma a% 7D)

Os segundo e terceiro argumentos’ parámetros ("FilterField1=Recrutador" and "FilterValue1=Manter" respectivamente) non teñen que ser codificadas URL porque non contén ningún carácter inseguros.

Notas:

Esta técnica normalmente debe traballar en calquera lugar que quere inserir un hiperenlace no XSLT onde a hyperlink inclúe parámetros na URL, como:

http://[servidor]/[local]/Lists / Open% 20Positions/AllItems.aspx?Ver ={84EEA2F5-121B-40B7-946F-0FA704A1DAA1}&FilterField1 = Recruiter&= FilterValue1 Manteña

Eu teño a URL en si, accedendo a lista personalizada e filtrado manual na columna de estado (labeled "Recruiter" arriba).

Rápido e sinxelo: Activar SharePoint Deseño de fluxo de traballo para actualizar unha forma de InfoPath

Escenario: I have an InfoPath form that front-ends a workflow process implemented using SharePoint Designer. At one point, a manager must approve the form. Dende que eu non podo contar sobre a historia de fluxo de traballo para atender aos requirimentos de auditoría meus, Decidín gardar a miña mensaxe de auditoría propia directamente no propio formulario.

Visión global:

Crea un formulario e publicalo como un tipo de contido and the form itself to a document library. Mark desired form fields as being updateable from MOSS. The form is tied to the content type and the content type is "attached" a unha biblioteca de formas (ou moitos, se quere). Write a workflow that updates the field.

Pasos específicos:

  1. Create a document library. This will hold your InfoPath template.
  2. Create a forms library.
  3. Create the InfoPath form. Include a text field, "Audit Message".
  4. Publicar o formulario como tipo de contido (Non un documento).
  5. Mentres enche os diálogos de publicación:
    un) Garde o ficheiro. Xsn á biblioteca de documentos (paso #1).
    b) Publish the "Audit Message" campo e certa marca: "Allow users to edit data in this field by using a datasheet or properties page".
    c) Crear un novo tipo de contidos e darlle un nome apropiado.
  6. O acceso a biblioteca de formularios.
    un) Vaia para a configuración avanzada e activa a biblioteca de formularios para xestionar os tipos de contido.
    b) Seleccione o tipo de contido recén creada (5c enriba). It will be grouped under "Microsoft InfoPath" (ou similar).
    c) Remove the default "Form" tipo de contido a partir da biblioteca.
    d) Mark the library to "show as web page" para que o formulario vai lanzar dende o SharePoint e non o cliente estación de traballo do InfoPath.
  7. Go back to the forms library proper and click "New" simplemente comprobar que o formulario é enviado correctamente e actuar como quere.
  8. Lume ata o SharePoint Deseño e navegar ata o sitio web que aloxa a súa biblioteca de formularios (desde o paso 2).
  9. Creación dun fluxo de traballo ligado á biblioteca de formularios.
  10. Add a single action "Set Field in Current Item". You should expect SharePoint Designer to list your your field, "Audit Message". Assign it a value.
  11. Fai clic en Finalizar e volver para a biblioteca de formularios.
  12. Create a new form and put some test value into the "Audit Message" campo.
  13. Garda-lo e volver para a biblioteca de formularios.
  14. Botón dereito do rato, select "Workflow" e iniciar o seu fluxo de traballo.
  15. It should run almost immediately. Pull up the form (desde o paso 12) e todo ten corrido para planificar, "Audit Message" asignado o valor que proporcionou no paso 10.

Notas:

Not all controls may configured for this bi-directional communication. Por exemplo, it does not seem to implement an SPD workflow that modifies text fields wrapped inside repeating sections.

One of the key take-away’s here is that we’ve really created a content type with an associated template. This also enables us to store multiple InfoPath form templates in the same form library.

This requires forms server. It’s most certainly not going to work in a WSS 3.0 ambiente e, probablemente, aínda precisa dun ambiente SharePoint Enterprise.

O Beagle Has Landed (Outubro 2007 cuestión)

(Esta é realmente unha noticia pouco vello, pero como o meu lema estación favorita lume proclama, "Better late than never").

Consulte aquí: http://www.sharepointbeagle.com/

Se non ten xa, asegúrese de subscribirse a.

Por suposto, asegúrese de ler meu artigo about a real-world SharePoint project (incluíndo definición de requisitos, KPI, tipo de contido, dashboards and more) as well as meu compañeiro de article about the content query web part.

Hai moitas outras cousas boas tamén.

Como eliminar “Ver todo o contido do sitio” ligazón

Estou esta pregunta case toda semana, normalmente no contexto dunha conversa de seguridade. An administrator/site creator has provisioned a site, seguridade configurado, arranged web parts and customized the quick launch to provide that oh-so-perfect set of options to the end user. Pero, para fóra da caixa, you can’t remove the "view all site content" ligazón.

Mark Wagner ofrece a resposta aquí (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). O seu write-up é fantástico en dous niveis. El ofrece unha resposta á pregunta, "How do I remove the View All Site Content" ligazón? Entón, el responde retorno inmediato en cuestión: ¿Como activar fácilmente o punto de vista todos os enlaces de contidos da web con base no sitio por páxina?

Como un extra: A súa visión funciona para WSS, non só Moss.

</final>

Rexístrate para o meu blog!