Kategoriarkiv: BDC

Quick Tips: BDC ADF versjonsnumrene er din venn

Hvis du er hånd-koding ADF filer og gjør mye av kode/import/test, Bruk versjonsnummeret til å gjøre livet ditt enklere.

Jeg hater å innrømme det., men før denne uken, Jeg var alltid slette den automatiske Dokumentmateren og importerer den på nytt. Dette vil bryte min forretningsdatakolonner og gjøre meg re-wire dem. Alle unødvendige.

Fil dette under "det er tydelig når du ser det".

Eksempel:

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

Endre den versjonen og importen og den eksisterende forretningsdatakolonnen bruker den oppdaterte versjonen automatisk med ytterligere konfigurasjon kreves.

</slutten>

Abonner på bloggen min.

Technorati Merkelapper:

Løsning: BDC Picker viser bare én kolonne med resultater

I mitt pågående forsøk på å gi en mer nyttig oppslagskolonnen ved hjelp av BDC, Jeg traff en vegg med BDC plukkeren. Hvis du ikke ser det, BDC plukkeren ligner på en folk-velgeren bortsett fra at det fungerer med kolonner av typen "business data".

Du tilgang plukkeren ved å klikke på ikonet åpen bok av en forretningsdatakolonne som vist:

bilde

Bildet over viser en forretningsdatakolonne kalles "Master dokument-Id". Denne kolonnen er koblet, via BDC, til en webtjeneste. Webtjenesten returnerer to kolonner med informasjon: Dokument-ID og tittel. Business formålet her er å gi en "dette dokumentet er basert på" funksjonen. Brukere velge en "master" dokumentet, og når de spare, en hendelsesmottaker kopierer meta datafelt fra refererte master.

Som standard, BDC plukkeren ser slik ut når jeg søker etter et dokument med ID = "38":

clip_image002

Det er nyttig, men ikke gode nok. Folk tror ikke i IDene, de tenker i form av titler og/eller andre metadata. Plukkeren lar deg søke i andre kolonner (f.eks. Tittel) men ikke vise den faktiske listen over titler funnet, bare deres DocId er som vist her:

clip_image002[1]

(Skjermbildet er ikke så stor fordi jeg ikke gjorde plukke et søk som alle gyldige resultater, men du kan se at hvis det hadde funnet noen resultater, det ville bare ha vist Docids, ikke titler).

Jeg søkte høyt og lavt for svaret på dette og ikke. Min kollega, den ærverdige Jonathan Bradshaw, hadde møtt og løst problemet. Da jeg nådde til ham om hjelp, han pekte meg i riktig retning.

Konfigurere plukkeren for å vise flere kolonner via ShowInPicker»" eiendom i den automatiske Dokumentmateren:

<Egenskapen navn="ShowInPicker" Type="System.Boolean">sann</Egenskapen>

Mer detaljert:

  <!-- Tittel -->
  <TypeDescriptor TypeName="System.String" navn="Tittel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Tittel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Egenskaper>
      <Egenskapen navn="DisplayByDefault" Type="System.Boolean">sann</Egenskapen>
      <Egenskapen navn="ShowInPicker" Type="System.Boolean">sann</Egenskapen>
    </Egenskaper>
  </TypeDescriptor>

Denne egenskapen presentere et mindre problem. Så snart du setter den gang, du må angi det for hver kolonne du vil vise. I mitt tilfelle, BDC picker viste DocId som standard. Men, Når jeg lagt "ShowInPicker" tittel, DocId vises ikke lenger. Jeg løste det ved å uttrykkelig angi egenskapen ShowInPicker for Doc-ID.

Her er resultatet:

bilde

(Jeg skal forklare de odde-ser "168 – CamlSchema.xsd" bygging i en fremtidig blogginnlegg. Kort sagt, Det er en sammensatt streng som gir en litt bedre brukeropplevelse).

selvfølgelig, å ha skrevet denne bloggpost, Jeg gjorde et søk etter "ShowInPicker" og fant mange treff, inkludert denne: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Det forklarer betydningen av denne eiendommen sammen med noen andre gode BDC ting.

</slutten>

Abonner på bloggen min!

Technorati Merkelapper:

Løsning på BDC-ADF Import mislykkes: “Følgende feil oppstod:”

Jeg ble igjen laging BDC-ADF-filer for hånd (slik at jeg kan bygge opp min "gå av min plen!" cred) og traff denne fin feilen:

bilde

"Import av programdefinisjon mislyktes. Følgende feil oppstod:"

Som du kan se, Det er en feil, men … Det er ikke til å fortelle meg hva det er.

I mitt tilfelle, problemet viste seg at jeg hadde startet med en funksjonell ADF for et annet prosjekt som er koblet til en database og utføres en SQL-spørring mot en visning. I dette nye prosjektet, Jeg kaller en metode på en webtjeneste. Jeg hadde fjernet DB bestemte ting og lagt min web service ting, men du kan ikke oppdatere den <LobSystem>'s Typeattributtet. Jeg byttet den til "WebService" og jeg lykkelig flyttet til nyere og mer spennende Importfeil, som ble håndtert i forfallsdato course.

Her er feil LobSystem:

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

Dette er riktig:

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

</slutten>

Technorati Merkelapper:

BDC synes en levedyktig erstatning For oppslag

OPPDATERINGEN: Dette oppslaget MSDN har noen interessante observasjoner fra JXJ basert på hans, hovedsakelig negativ, erfaringer går ned denne banen: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Vi har et scenario der vi trenger å koble to dokumenter biblioteker via en felles "dokument-ID" feltet.

Vi bruker ofte en oppslagskolonne implementerer koblinger som dette. Det er flere ulemper til oppslagskolonner, tre hvorav:

  1. Bare én kolonne fra Oppslag oppslag biblioteket kan kobles.
  2. Ytelse: Kildedokumentbiblioteket kan inneholder hundrevis av oppføringer. Det er for mange oppføringer i oppslaget.
  3. Søk: Det er ingen integrert søkefunksjon. Jeg mener ikke i MOSS betydningen av søk, men det er ikke mulig å søke / filtrere etter flere kolonner fra kildedokumentbiblioteket og finne koblingen du vil.

Støttet av BDC, Vi kan bruke "-forretningsdata" kolonnetype og det gir en overlegen søk og lar flere kolonner med data vises i listevisninger.

Jeg har hatt noen foreløpige suksess med denne tilnærmingen, og har tenkt å skrive mer om det.

Hvis du har jobbet denne vinkelen før, og har noen kommentarer, Vær dele!

</slutten>

Technorati Merkelapper:

Løsning på BDC-Importfeil: “Kan ikke laste inn typen beskrevet av Typedescriptor's TypeName …”

Jeg har jobbet med BDC i dag, koding ADF filer for hånd og generere meg noen feil. En slik feil:

Programmet definisjon importen var mislykket. Følgende feil oppstod: Kan ikke laste inn typen beskrevet av Typedescriptor's TypeName. Parameternavn: typeName feil oppstod ved eller like før linje: ' 35’ og posisjon: "20".

MOSS vises denne feil når jeg prøvde å importere-ADF-XML-filen.

Jeg forsket på Internets og funnet at jeg var refererer til LOB-forekomstnavn (fra den <LobSystemInstance>) i min <TypeDescriptor> node når bør jeg har referert til LOB-navnet selv (fra <LobSystem>).

Feil:

<TypeDescriptor TypeName="Conchango.KeyValue, LOB-forekomstnavn" Name = "KeyValue">

Korrigere:

<TypeDescriptor TypeName="Conchango.KeyValue, LOB-navn" Name = "KeyValue">

Håpe dette sparer noen en time eller to av tid.

</slutten>

Abonner på bloggen min!

Technorati Merkelapper:

En BDC-kjøretidsfeil forklart

Jeg fikk en BDC-feil denne uken som viste seg på brukergrensesnitt og i den 12 strukturen Logg under kjøring.

Første, Dette dukket opp i brukergrensesnittet:

Finner ikke felt for innsetting av alle identifikatorverdiene for riktig kjøring av SpecificFinder MethodInstance med navnet … Kontroller at inndataparametere har TypeDescriptors knyttet til alle identifikatorer som er definert for denne enheten.

Her er et skjermbilde:

clip_image001

Jeg kan også føre denne meldingen skal vises i den 12 strukturen loggen vil (bruke min patentert high-tech-don't-try-this-at-home "mystisk feil" metoden):

11/14/2007 09:24:41.27 W3WP.exe (0x080C) 0x0B8C SharePoint Portal Server forretningsdata 6q4x høy unntak i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Identifier-verdien ”, typen ”, er ugyldig. Forventet identifikatorverdi av typen System.String. ved Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) ved Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhet enhet, Objekt[] userValues, LobSystemInstance lobSystemInstance) ved Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vis desiredView) ved Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() ved Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jeg søkte rundt og fant noen avledningene i det MSDN-forumet, men de var ikke nok for meg å forstå hva jeg gjorde galt. Jeg så en webcast av Ted Pattison som min selskapet har vet på en server og kom til å forstå mitt problem.

I min ADF, Jeg kobler til en SQL-database som vist:

            <Egenskapen navn="RdbCommandText" Type="System.String">
              <![CDATA[
                VELG SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      LAND, ADDRESS1, ADRESSE2, ADDRESS3, ADDRESS4, BYEN, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      FYLKE, TILSTAND, POST, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, UTVIDELSE, FAKS, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG fra dbo.PS_CARRIER_ID_VW med (NOLOCK)
                HVOR
                  (SETID <> "DEL") og
                  (lavere(CARRIER_ID) >= lavere(@MinId)) og
                  (lavere(CARRIER_ID) <= lavere(@MaxId)) og
                  (lavere(DESCR) SOM lavere(@InputDescr))
                ]]>
            </Egenskapen>

Jeg var gitt at SQL fra en DBA person og jeg får til å forstå at det er en spesielle Vis de opprettet bare for meg. Unik nøkkel det er CARRIER_ID.

Her er feilen jeg introdusert:

      <Identifikatorer>
        <Identifikator navn="CARRIER_ID" TypeName="System.String" />
        <Identifikator navn="DESCR" TypeName="System.String" /> 
</Identifikatorer>

Et sted langs linjen, Jeg hadde klart å forvirre meg selv over betydningen av <Identifikatorer> og lagt DESCR selv om det ikke er egentlig en identifikator. Jeg tok DESCR identifikatorer sett og vips! Det hele virket.

Jeg håper dette sparer noen sorg 🙂

Technorati Merkelapper: , , ,

BDC ADF og din venn, CDATA

Jeg har lagt merke til noe vanskelig og unødvendig hånd-koding av RdbCommandText i eksempler (inkludert MSDN-dokumentasjonen).

Jeg ønsket å påpeke nykommere til BDC at kommandoer kan innpakket i en CDATA-kode i deres "naturlige" skjemaet. Så, Denne vanskelig konstruksjon:

<Egenskapen navn="RdbCommandText" Type="System.String">
Velg dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (ID &gt;= @MinId) OG (ID &lt;= @MaxId)
</Egenskapen>

kan vises bedre på denne måten:

<Egenskapen navn="RdbCommandText" Type="System.String">
<![CDATA[
Velg dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (ID >= @MinId) OG (ID <= @MaxId)
]]>
</Egenskapen>

</slutten>

BDC Primer

Intro til BDC

Funksjonell eksempel: BDC ADF som kobles til SQL-database med innebygde bruker-id og passord

Jeg trengte å wire opp MOSS til en SQL-database via BDC. For testing/POC formål, Jeg ønsket å bygge SQL regningen bruker id og passord i den automatiske Dokumentmateren. Starter med Denne malen (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jeg opprettet en automatisk dokumentmater som kobler til en bestemt SQL server-forekomst og logger på med en bestemt brukerid og passord og vist i denne kodebiten:

  <LobSystemInstances>
    <LobSystemInstance navn="ClaimsInstance">
      <Egenskaper>
        <Egenskapen navn="AuthenticationMode" Type="System.String">Gjennomgang</Egenskapen>
        <Egenskapen navn="DatabaseAccessProvider" Type="System.String">SqlServer</Egenskapen>
        <Egenskapen navn="RdbConnection-datakilde" Type="System.String">faktisk serveractual forekomst</Egenskapen>
        <Egenskapen navn="RdbConnection første katalog" Type="System.String">faktisk første katalog</Egenskapen>
        <Egenskapen navn="RdbConnection integrert sikkerhet" Type="System.String">SSPI</Egenskapen>
        <Egenskapen navn="RdbConnection Pooling" Type="System.String">USANN</Egenskapen>

        <!-- Disse er sentrale verdier: -->
        <Egenskapen navn="RdbConnection bruker-ID" Type="System.String">enfaktisk bruker-ID</Egenskapen>
        <Egenskapen navn="RdbConnection passord" Type="System.String">faktisk passord</Egenskapen>
        <Egenskapen navn="RdbConnection Trusted_Connection" Type="System.String">USANN</Egenskapen>

      </Egenskaper>
    </LobSystemInstance>
  </LobSystemInstances>

Det er ikke en beste praksis, men det er nyttig for en rask og enkel konfigurasjon for testing. Dette var overraskende vanskelig å finne ut. Jeg har aldri funnet en funksjonell eksempel med søkeord:

  • ADF innebygd brukerid og passord
  • bygge inn brukernavn og passord i automatisk dokumentmater
  • bygge inn brukernavn og passord i adf bdc
  • SharePoint bdc primer
  • SharePoint bygge inn brukernavn og passord i automatisk dokumentmater

</slutten>

Abonner på bloggen min.