archivi categoria: BDC

Suggerimento rapido: Numeri di versione del file ADF BDC sono il tuo amico

Se stai mano-codificazione ADF file e facendo un sacco di cicli di prova/codice/importazione, utilizzare il numero di versione per rendere la vita più facile.

Odio ammetterlo, ma fino a questa settimana, Ero sempre l'eliminazione di file ADF e quindi reimportandoli. Questo sarebbe rompere mio colonne di dati business e farmi ri-li filo. Tutte le inutili.

Questo file sotto "è evidente una volta che si vede".

Esempio:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Tipo="WebService" Versione="1.2.0.0" Nome="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Cambiare quella versione e reimportazione e la colonna di dati aziendali esistenti utilizza la versione aggiornata automaticamente con alcuna configurazione aggiuntiva richiesta.

</fine>

Iscriviti al mio blog.

Technorati Tags:

Soluzione: BDC Picker Mostra solo una colonna di risultati

Nei miei tentativi in corso a fornire un colonna di ricerca più utile utilizzare BDC, Mi ha colpito un muro con il selettore BDC. Se non avete ancora vederlo, il selettore BDC è simile a una selezione di utenti che funziona con colonne di tipo "dati aziendali".

Si accede al selettore facendo clic sull'icona del libro aperto di una colonna di dati di business come mostrato:

immagine

L'immagine sopra mostra una colonna di dati di business denominata "Master documento Id". Tale colonna è collegata, Via BDC, a un servizio web. Il servizio web restituisce due colonne di informazioni: Titolo e ID di documento. Lo scopo di affari qui è quello di fornire un "questo documento è basato su" funzione. Gli utenti selezionano un maestro"" documento e quando si salva, un ricevitore di evento copia campi di meta dati dal master cui si fa riferimento.

Per impostazione predefinita, il selettore BDC assomiglia a questo quando la ricerca per un documento cui ID = "38":

clip_image002

Che è utile, ma non abbastanza buono. La gente non pensa in termini di IDs, pensano in termini di titoli e/o altri dati di meta. Il selettore consente di cercare su altre colonne (e. g. Titolo) ma non mostrerà l'elenco effettivo dei titoli che ha trovato, solo loro DocId s come indicato qui:

clip_image002[1]

(La schermata non è così grande, perché non scegliere una ricerca che restituisce risultati validi, ma si può vedere che se fosse trovato alcuni risultati, e solo dimostrato di DocId, titoli non).

Ho cercato di alta e bassa per la risposta a questa e non riuscita. Il mio collega, il Venerabile Jonathan Bradshaw, aveva affrontato e risolto questo problema. Quando ho raggiunto a lui per aiuto, Egli mi ha segnalato nella giusta direzione.

Configurare la selezione per visualizzare le colonne multiple tramite il ShowInPicker"" Proprietà nell'ADF:

<Proprietà Nome="ShowInPicker" Tipo="System. Boolean">true</Proprietà>

Più in dettaglio:

  <!-- Titolo -->
  <TypeDescriptor TypeName="System. String" Nome="Titolo" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titolo</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Proprietà>
      <Proprietà Nome="DisplayByDefault" Tipo="System. Boolean">true</Proprietà>
      <Proprietà Nome="ShowInPicker" Tipo="System. Boolean">true</Proprietà>
    </Proprietà>
  </TypeDescriptor>

L'impostazione di questa proprietà introdurre un problema minore. Non appena si imposta una volta, è necessario impostarlo per ogni colonna che si desidera visualizzare. Nel mio caso, Selezione BDC ha mostrato DocId per impostazione predefinita. Tuttavia, una volta ho aggiunto "ShowInPicker" a titolo, DocId non più visualizzati. Ho risolto impostando in modo esplicito la proprietà ShowInPicker per ID Doc.

Ecco il risultato:

immagine

(Ti spiego la strana "168 – CamlSchema.xsd" costruzione in un futuro post del blog. In breve, è una stringa concatenata che permette un'esperienza utente leggermente migliore).

Naturalmente, Dopo aver scritto questo post di Blog, Ho appena fatto una ricerca per "ShowInPicker" e ha trovato numerosi successi, compreso questo: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Spiega il significato di tale proprietà insieme ad alcune altre cose buone di BDC.

</fine>

Iscriviti al mio blog!

Technorati Tags:

Soluzione al fallimento di importazione BDC ADF: “Si è verificato il seguente errore:”

Ancora una volta stavo crafting file ADF BDC a mano (così che io posso costruire il mio "scendere il mio prato!" cred) e ha colpito questo errore bello:

immagine

"Importazione di definizione di applicazione non riuscita. Si è verificato il seguente errore:"

Come si può vedere, c'è un errore, ma … non è intenzione di dirmi che cosa è.

Nel mio caso, il problema si è rivelato che avevo cominciato con un ADF funzionali per un progetto diverso che connesso a un database ed eseguito una query SQL su una vista. In questo nuovo progetto, Sto chiamando un metodo su un servizio web. Avevo messo a nudo le cose specifiche di DB e aggiunto la mia roba di servizio web, ma non è riuscito ad aggiornare il <LobSystem>di attributo type. Passato a "WebService" e sono felicemente passato ad errori di importazione più recente e più emozionante, che sono stati gestiti a tempo debito.

Ecco il LobSystem sbagliato:

<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "Database"
Versione = "1.0.0.0" Nome = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Questo è corretto:

<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "WebService"
Versione = "1.0.0.0" Nome = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

</fine>

Technorati Tags:

BDC sembra un sostituto valido per le ricerche

AGGIORNAMENTO: Questo distacco di MSDN ha alcune interessanti osservazioni da JXJ basato sul suo, negative, esperienze andando su questa strada: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Abbiamo uno scenario di business dove dobbiamo collegare due librerie di documenti tramite una comune "documento ID" Campo.

Spesso usiamo una colonna di ricerca ai collegamenti implements like this.. Ci sono diversi inconvenienti a colonne di ricerca, tre dei quali sono:

  1. Solo una colonna dalla biblioteca di ricerca di ricerca possa essere collegata.
  2. Prestazioni: La libreria di origine potrebbe contenere centinaia di voci. È troppe voci in lookup.
  3. Ricerca: Non c'è nessuna ricerca integrata. Non intendo in senso MOSS di ricerca, ma non non c'è nessun modo per cercare / filtrare in base a più colonne dalla raccolta di documenti di origine e individuare il collegamento che si desidera.

Sostenuta da BDC, possiamo usare un dati di business"" tipo di colonna e si fornisce una ricerca superiore e permette anche più colonne di dati vengono visualizzati nelle visualizzazioni elenco.

Ho avuto qualche successo preliminare con questo approccio e prevede di scrivere di più su di esso.

Se hai lavorato questo angolo prima e avere eventuali commenti, si prega di condividere!

</fine>

Technorati Tags:

Soluzione all'errore di importazione BDC: “Impossibile caricare il tipo descritto dal TypeName del TypeDescriptor …”

Ho lavorato con BDC oggi, codifica i file ADF a mano e alcuni errori di generazione me stesso. Un tale errore:

Importazione di definizione di applicazione non riuscita. Si è verificato il seguente errore: Impossibile caricare il tipo descritto dal TypeName del TypeDescriptor. Nome del parametro: typeName errore è stata rilevata appena prima linea: 35’ e posizione: '20'.

MOSS visualizzato questo errore quando ho provato a importare il file XML ADF.

Ricercato Internets e trovato che io stavo riferimento al nome di istanza LOB (dal <LobSystemInstance>) nel mio <TypeDescriptor> nodo quando dovrei avere fatto riferimento il nome LOB stesso (Da <LobSystem>).

Sbagliato:

<TypeDescriptor TypeName="Conchango.KeyValue, Nome istanza di pallonetto" Nome = "KeyValue">

Correggere:

<TypeDescriptor TypeName="Conchango.KeyValue, Nome LOB" Nome = "KeyValue">

Spero che questo qualcuno salva un'ora o due di tempo.

</fine>

Iscriviti al mio blog!

Technorati Tags:

Un errore di runtime BDC spiegato

Mi ha causato un errore di BDC questa settimana che si è manifestata nell'interfaccia utente e nella 12 registro dell'alveare in fase di esecuzione.

Primo, Questa apparve nell'interfaccia utente:

Non riusciva a trovare campi per inserire tutti i valori dell'identificatore per eseguire correttamente una SpecificFinder MethodInstance con nome … Controllare che i parametri di input includano TypeDescriptor associati a ogni identificatore definito per questa entità.

Ecco una schermata:

clip_image001

Potuto anche causare questo messaggio a comparire nella 12 registro dell'alveare a sarà (usando il mio high-tech-don't-try-this-at-home brevettato "misteriosi Errori" Metodo.):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C dati di SharePoint Portal Server Business 6q4x alta eccezione in BusinessDataWebPart.OnPreRender: System. InvalidOperationException: Il valore dell'identificatore ”, di tipo ”, non è valido. Valore previsto identificatore di tipo 'System. String'. a Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Oggetto[] subIdentifierValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entità di entità, Oggetto[] userValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Ho cercato in giro e trovato qualche porta nella Forum MSDN, ma non erano abbastanza per me per capire quello che stavo facendo sbagliato. Ho guardato un webcast di Ted Pattison che il mio azienda ha squirreled lontano su un server ed è venuto a realizzare il mio problema.

Nel mio ADF, Connettersi a un database SQL come illustrato:

            <Proprietà Nome="RdbCommandText" Tipo="System. String">
              <![CDATA[
                SELEZIONARE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAESE, INDIRIZZO1, INDIRIZZO2, INDIRIZZO3, INDIRIZZO4, CITTÀ, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      CONTEA DI, STATO, POSTALE, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFONO, ESTENSIONE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG da dbo.PS_CARRIER_ID_VW con (NOLOCK)
                DOVE
                  (SETID <> 'PARTI') e
                  (inferiore(CARRIER_ID) >= bassa(@MinId)) e
                  (inferiore(CARRIER_ID) <= bassa(@ MaxId)) e
                  (inferiore(DESCR) COME inferiore(@InputDescr))
                ]]>
            </Proprietà>

Mi è stato fornito che SQL da una persona DBA e sono fatto capire che è un speciale vista che hanno creato solo per me. La chiave univoca c'è CARRIER_ID.

Ecco il bug che introdotto:

      <Identificatori>
        <Identificatore Nome="CARRIER_ID" TypeName="System. String" />
        <Identificatore Nome="DESCR" TypeName="System. String" /> 
</Identificatori>

Da qualche parte lungo la linea, Ero riuscito a confondere me stesso sopra il significato del <Identificatori> e aggiunto DESCR, anche se non è in realtà un identificatore. Ho preso DESCR fuori il set di identificatori e presto! E tutto ha funzionato.

Spero che questo salvi qualcuno un po 'di dolore 🙂

Technorati Tags: , , ,

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.