archivi mensili: Novembre 2007

Non si può battere Reach di SharePoint

Durante gli ultimi due giorni, Ho partecipato a due incontri durante i quali abbiamo presentato i risultati di un progetto SharePoint. Il CIO e il suo team si unì alla prima riunione. Che è standard e non particolarmente degno di nota. Il reparto IT è ovviamente coinvolto in un'implementazione di enterprise di qualsiasi progetto di tecnologia. Il secondo incontro ampliato per includere un valtolina. dal marketing, diversi registi che rappresentano HR, Logistica, Produzione, Progetti d'investimento, Qualità, L'acquisto di, Sviluppo azienda e altri reparti (alcuni dei quali non erano direttamente coinvolti nella fase attuale). Che è un possente vasto pubblico.

Nella mia vita precedente, Ho lavorato principalmente su progetti ERP e CRM. Entrambi hanno un dominio di soluzione abbastanza ampia ma non così ampia come SharePoint. Essere pienamente realizzato, Progetti SharePoint legittimamente e necessariamente raggiungono in ogni angolo e fessura di un'organizzazione. Come molte altre soluzioni di enterprise hanno di che tipo di raggiungere? Non ci sono molti.

SharePoint rappresenta chiaramente un'enorme opportunità per quelli di noi abbastanza fortunati da essere in questo spazio. Esso fornisce una grande opportunità tecniche (che è in qualche modo capovolto qui sotto "Tecnologie deve padroneggiare"). Ma ancora meglio, SharePoint ci espone a una gamma ampia e vasta dei processi di business attraverso questi impegni. Quanti CRM specialisti lavorano con il lato di produzione dell'azienda? Quanti ERP consulenti collaborano con risorse umane all'acquisizione di talenti? SharePoint supera entrambi.

Qualcosa come, non è perfetto, ma è un dannato buon posto per essere.

Per amore di [Riempa tuo più amato essere persona/superiore], non cambiare il ' titolo’ colonna del sito.

Sulla Forum di SharePoint, ogni tanto qualcuno chiede di "cambiare l'etichetta del titolo" o circa "rimozione titolo dalle liste".

Linea di fondo: Non farlo!

Purtroppo, l'interfaccia utente consente un cambiamento unidirezionale di tale etichetta di colonna, come mostrato:

immagine

Si intitola una colonna associata alla voce"" tipo di contenuto. Molti, molti, molti di CT utilizzare questa colonna e se cambiarla qui, esso ripples ovunque. C'è una buona probabilità che non intendete che ciò accada. Probabilmente eri pensare a te stesso, "Ho una lista di ricerca personalizzato e ' titolo’ semplicemente non ha senso come un nome di colonna, così ho intenzione di cambiarlo in ' codice di stato’ e aggiungere una colonna di descrizione." Ma se si seguono su quel pensiero e rinominare ' titolo’ a 'Codice di stato', titolo di ogni lista (tra cui le raccolte documenti) modifiche al codice di stato"" e tu probabilmente non intendo per quel che accada.

Il vero problema è che questo è un cambiamento unidirezionale. L'interfaccia utente "sa" quel titolo"" è una parola riservata. Così, Se si tenta di modifica il codice di stato"" Torna a "Title", si eviterà, e ora hai dipinta da soli in un angolo using paint that never dries 🙂

Che cosa succede se già cambiato? Non ho visto la risposta che tutti noi vogliamo, che è un metodo semplice e facile per modificare l'etichetta di 'Titolo'. Subito, il miglior consiglio è di cambiarlo a qualcosa come "Doc/elemento Title". Che è un'etichetta abbastanza generica che non può essere troppo fastidioso per gli utenti.

Ho poche altre idee che sono sulla mia lista di cose da fare delle cose alla ricerca:

  • Contattare Microsoft.
  • Fare qualcosa con il modello a oggetti, forse in concomitanza con una caratteristica.
  • Capire lo schema del database e aggiornare manualmente SQL. (Prima di fare questo però dovresti contattare Microsoft; esso probabilmente invalidare il vostro contratto di supporto).

Se qualcuno sa come risolvere questo problema, si prega di inviare un commento.

Aggiornamento tardo pomeriggio, 11/15: Ho trovato questo link che descrive un metodo per la creazione di un tipo di elenco che non dispone di una colonna di titolo: http://www.venkat.org/index.php/2007/09/03/how-to-remove-title-column-from-a-custom-list/

ADF BDC e il tuo amico, CDATA

Ho notato qualche goffo e inutile mano codifica di RdbCommandText in alcuni esempi (compresa la documentazione MSDN).

Volevo segnalare ai nuovi arrivati a BDC che comandi possono essere incapsulati all'interno di un tag CDATA in loro naturale"" modulo. Così, Questa costruzione scomoda:

<Proprietà Nome="RdbCommandText" Tipo="System. String">
SELECT dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement from dbo.MCRS_SETTLEMENT
DOVE (Identificazione &gt;= @ MinId) E (Identificazione &lt;= @ MaxId)
</Proprietà>

può essere meglio rappresentato in questo modo:

<Proprietà Nome="RdbCommandText" Tipo="System. String">
<![CDATA[
SELECT dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement from dbo.MCRS_SETTLEMENT
DOVE (Identificazione >= @ MinId) E (Identificazione <= @ MaxId)
]]>
</Proprietà>

</fine>

BDC Primer

Intro a BDC

Esempio funzionale: ADF BDC che si connette a un database SQL con incorporati user id e password

Avevo bisogno di cablare MOSS a un database SQL tramite BDC. Per scopi di test/POC, Ho voluto incorporare il SQL account user id e la password nel file ADF. A partire da Questo modello (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Ho creato un file ADF connesso a una particolare istanza di SQL server e i log in con una specifica user id e password e mostrato in questo frammento:

  <LobSystemInstances>
    <LobSystemInstance Nome="ClaimsInstance">
      <Proprietà>
        <Proprietà Nome="AuthenticationMode" Tipo="System. String">Pass-through</Proprietà>
        <Proprietà Nome="DatabaseAccessProvider" Tipo="System. String">SqlServer</Proprietà>
        <Proprietà Nome="Origine dati RdbConnection" Tipo="System. String">istanza effettivo serveractual</Proprietà>
        <Proprietà Nome="RdbConnection Initial Catalog" Tipo="System. String">Catalogo iniziale effettivo</Proprietà>
        <Proprietà Nome="Protezione integrata RdbConnection" Tipo="System. String">SSPI</Proprietà>
        <Proprietà Nome="RdbConnection pool" Tipo="System. String">falso</Proprietà>

        <!-- Questi sono i valori chiavi: -->
        <Proprietà Nome="RdbConnection User ID" Tipo="System. String">unctual User ID</Proprietà>
        <Proprietà Nome="RdbConnection Password" Tipo="System. String">Password attuale</Proprietà>
        <Proprietà Nome="RdbConnection Trusted_Connection" Tipo="System. String">falso</Proprietà>

      </Proprietà>
    </LobSystemInstance>
  </LobSystemInstances>

Non è una best practice, ma è utile per una configurazione rapida e semplice per il test. Questo è stato sorprendentemente difficile da capire. Non ho mai trovato un esempio funzionale con parole chiave di ricerca:

  • ADF incorporato userid e password
  • incorporare l'id utente e la password nel file adf
  • incorporare user id e password nel file adf bdc
  • SharePoint bdc iniettore
  • SharePoint incorporare user id e password nel file adf

</fine>

Iscriviti al mio blog.

Azioni del flusso di lavoro personalizzato SPD — miglioramenti di manipolazione stringa

Circa una settimana fa, Ho iniziato un progetto codeplex che fornisce un metodo semplice e ragionevolmente generico per l'aggiunta di funzioni di azione personalizzata per flusso di lavoro SharePoit Designer. È descritto qui: http://www.codeplex.com/spdwfextensions. Di là semplicemente fornendo un quadro, Essa mira inoltre a fornire una serie di funzioni utili che renderanno più utile/flessibile/potente SPD.

Qui ci sono le attuali caratteristiche previste per la versione 1.0: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Se qualcuno ha interesse a questo progetto, si prega di lasciare un commento o start/aggiungere a una discussione qui: http://www.codeplex.com/spdwfextensions/Thread/List.aspx

Ecco il set corrente di funzioni che sono state codificate (anche se non completamente testato come di 11/08/07):

Funzione Descrizione (Se non lo stesso come.Funzione netto)
Num-entries() Restituisce il numero "voci" in una stringa secondo un delimitatore specificato.

Per esempio: Num-voci in una stringa "un,b,c" con delimitatore"," = 3.

Voce() Restituisce il token n-esimo di una stringa secondo un delimitatore specificato.
Lunghezza String. length
Sostituire() Replace()
Contiene() Contains()
Restituisce la parola "true" o la parola "false".
Sottostringa(Start) Substring(Start)
Sottostringa(Start,fine) Substring(Start,fine)
ToUpper() ToUpper()
ToLower() ToLower()
StartsWith() String. StartsWith()
Restituisce la parola "true" o la parola "false".
EndsWith() String. EndsWith()
Restituisce la parola "true" o la parola "false".

Rapido & facile url Encoding utilità desktop

Ho dover url-codificare alcune stringhe di questa settimana e schiaffeggiato insieme a una piccola utility che ho pensato io metterei SkyDrive per la comunità.

Ottenere il binario qui: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncode.zip

Ottenere la soluzione di visual studio: http://cid-1cc1edb3daa9b8aa.skydrive.live.com/self.aspx/SharePoint/WinUrlEncodeVS2005.zip

Ecco una schermata:

immagine

Facile e veloce: Incorporare un collegamento ipertestuale nel web part visualizzazione dati XSLT

AGGIORNAMENTO (01/17/08): Questo blog parla di collegamento ipertestuale più bontà XSL: http://www.sharepointsecurity.com/blog/sharepoint/sharepoint-2007-development/rewriting-links-in-search-results-xslt.

Panoramica e obiettivo: Avevo creato un semplice grafico a barre per servire come componente in un dashboard. I'll salvare i dettagli sulla costruzione di grafici per un altro post, ma non ha inventato quella tecnica (né il punto interrogativo, per quanto riguarda). Si è scoperto che c'era un bug nel grafico, e mentre io fisso che, Ho colto l'occasione per convertire alcune etichette in collegamenti ipertestuali che puntava alla lista sottostante dietro il grafico. Per esempio, C'è un'etichetta con valore "Hold". Ho voluto girare l'etichetta in un collegamento ipertestuale in modo che l'utente potrebbe fare clic su di esso e drill-down per le specifiche voci nell'elenco cui valore dello stato è "Hold".

Passi:

  1. Visual studio uso per SharePoint supporto intellisense.
  2. Copia XSLT di DVWP in visual studio (creare un progetto vuoto, aggiungere al progetto un file XSL).
  3. Copiare il link che si desidera utilizzare negli Appunti.
  4. Incollarlo nella giusta posizione in XSL.
  5. Convertire separatori argomento URL sulla stringa di query da"&" a"&amp;"
  6. Codifica URL singoli argomenti.
  7. Avvolgere quel dentro un <href…> </un>

Esempio:

Ho un URL:

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

Convertirlo in:

     <un href="Lists/Open Positions/AllItems.aspx?Vista = % 7b84EEA2F5-121B-40B7-946F-
0FA704A1DAA1 7% d&amp;FilterField1 = Recruiter&amp;FilterValue1 = Hold"> Tenere premuto: </un>

Io ho trasformato manualmente il primo argomento da:

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

A:

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

(In questo, le trasformazioni di parentesi graffa aperta a 7b % e la chiusura graffa aperta si trasforma al 7% d)

Gli argomenti di secondo e terzi’ parametri ("FilterField1 =Reclutatore" e "FilterValue1 =Tenere premuto" rispettivamente) non è necessario essere codificata in url perché non contengono caratteri non sicuri.

Note:

Questa tecnica in generale dovrebbe lavorare ovunque che si desidera incorporare un collegamento ipertestuale in XSLT dove il collegamento ipertestuale include i parametri sull'URL quali:

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

Ho ottenuto l'URL stesso accedendo all'elenco personalizzato e filtro manualmente su nella colonna Stato (classificati come "Recruiter" di sopra).

Semplice e veloce: Abilitare il flusso di lavoro SharePoint Designer aggiornare un modulo di InfoPath

Scenario: Ho un modulo di InfoPath che front-end un processo del flusso di lavoro implementato tramite SharePoint Designer. A un certo punto, un manager deve approvare il modulo. Da allora non posso contare su storia del flusso di lavoro per soddisfare la mia revisione requisiti, Decido di memorizzare il mio messaggio di controllo direttamente sul modulo stesso.

Panoramica:

Progettare il modulo e pubblicarlo come un tipo di contenuto e il modulo stesso in una raccolta documenti. Marco desiderato campi modulo come essendo aggiornabile da MOSS. La forma è legata al tipo di contenuto e il tipo di contenuto è "collegato" in una libreria di forme (o molti, Se vuoi). Scrivere un flusso di lavoro che aggiorna il campo.

Passaggi specifici:

  1. Creare una raccolta documenti. Questo terrà il vostro modello di InfoPath.
  2. Creare una libreria di moduli.
  3. Creare il modulo di InfoPath. Includere un campo di testo, "Messaggio di controllo".
  4. Pubblicare il modulo come tipo di contenuto (NON un documento).
  5. Durante la compilazione le finestre di dialogo editrice:
    un) Salvare il file con estensione xsn nella raccolta documenti (passo #1).
    b) Pubblicare il messaggio di Audit"" Campo e segnare vero: "Consenti agli utenti di modificare i dati in questo campo utilizzando una pagina di proprietà o foglio dati".
    c) Creare un nuovo tipo di contenuto e dargli un nome appropriato.
  6. Accedere alla libreria di forme.
    un) Vai alle impostazioni avanzate e attivare la libreria di forme gestire i tipi di contenuto.
    b) Selezionare il tipo di contenuto appena creato (5c di cui sopra). Si saranno raggruppata sotto "Microsoft InfoPath" (o simili).
    c) Rimuovere il valore predefinito "forma" tipo di contenuto dalla libreria.
    doppie) Mark la libreria a "Visualizza come pagina web" affinché il modulo lancerà da SharePoint e non il client workstation di InfoPath.
  7. Tornare alla libreria di forme corretta e fare clic su "nuovo" semplicemente verificare che il modulo è inviato correttamente e recitazione come volete.
  8. Fuoco su SharePoint Designer e spostarsi al sito che ospita la tua libreria di forma (dal passo 2).
  9. Creare un nuovo flusso di lavoro associato alla libreria di forme.
  10. Aggiungere una singola azione "Imposta campo in elemento corrente". Si dovrebbe aspettare SharePoint Designer alla lista sei il campo, "Messaggio di controllo". Assegnare un valore.
  11. Fare clic su fine e tornare alla libreria di forma.
  12. Creare un nuovo modulo e mettere qualche valore di prova nel messaggio Audit"" Campo.
  13. Salvarlo e tornare alla libreria di forma.
  14. Tasto destro del mouse, selezionare "Workflow" e iniziare il vostro flusso di lavoro.
  15. Dovrebbe funzionare quasi immediatamente. Tirare verso l'alto il modulo (dal passo 12) e se tutto è andato per pianificare, "Il messaggio di controllo" è stato assegnato il valore fornito nel passaggio 10.

Note:

Non tutti i controlli possono configurato per questa comunicazione bi-direzionale. Per esempio, non sembra per implementare un flusso di lavoro SPD che modifica i campi di testo avvolti all'interno di sezioni ripetute.

Uno del chiave take-away qui è che abbiamo davvero creato un tipo di contenuto con un modello associato. Questo permette anche di memorizzare più modelli di modulo di InfoPath nella stessa raccolta moduli.

Questo richiede forme server. Certamente non sta a lavorare in un WSS 3.0 ambiente e probabilmente anche richiede un ambiente SharePoint Enterprise.

Il Beagle ha atterrato (Ottobre 2007 problema)

(Questa notizia è in realtà un po ' vecchia, ma, come proclama il mio motto preferito fire station, "Meglio tardi che mai").

Check it out qui: http://www.sharepointbeagle.com/

Se già non avete, essere sicuri di Registrati.

Naturalmente, Assicuratevi di leggere il mio articolo su un progetto reale SharePoint (compresa la definizione di requisiti, KPI, tipi di contenuto, cruscotti e altro ancora) così come il mio collega articolo sulla web part query contenuto.

C'è anche molta altra roba buona.

Come rimuovere “Mostra tutti i contenuti del sito” link

Mi sono chiesto questa domanda quasi ogni settimana, normalmente nel contesto di una discussione di sicurezza. Un creatore di amministratore/sito è eseguito il provisioning di un sito, sicurezza configurato, organizzato web parti e personalizzato il lancio rapido per fornire quel set di oh-così-perfetto di opzioni per l'utente finale. Ma, fuori dalla scatola, non puoi rimuovere la "Mostra tutti i contenuti del sito" link.

Mark Wagner fornisce la risposta qui (http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=36). La scrittura è formidabile su due livelli. Esso fornisce una risposta alla domanda, "Come faccio a rimuovere la vista tutto il contenuto del sito" link? Poi, esso risponde alla domanda di proseguimento immediata: Come faccio ad attivare facilmente la visualizzazione di tutti i contenuti del sito link su base sito per sito?

Come bonus: Il suo approccio funziona per WSS, non solo MOSS.

</fine>

Iscriviti al mio blog!