Kategori Arkiv: BDC

Hurtige Tip: BDC-ADF versionsnumrene er din ven

Hvis du hånd-kodning ADF filer og gør en masse import-kode-test cykler, Brug den gengivelse antal til at gøre dit liv nemmere.

Jeg hader at indrømme det., men indtil denne uge, Jeg altid slette ADF'EN og importere det igen. Dette ville bryde min business datakolonner og gøre mig re-wire dem. Alle unødvendige.

Fil dette under "det er indlysende, 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" Version="1.2.0.0" Navn="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Ændre denne version og re-importere og den eksisterende firmadatakolonne bruger den opdaterede version automatisk med kræves ingen yderligere konfiguration.

</slutningen>

Abonner på min blog.

Technorati Tags:

Løsning: BDC Picker viser kun én kolonne af resultater

I min igangværende forsøg på at give en mere nyttigt opslagskolonnen ved hjælp af BDC, Jeg ramte en mur med BDC-picker. Hvis du ikke ser det, BDC-picker er svarende til en mennesker picker, bortset fra at det virker med kolonner af typen "business data".

Du få adgang til vælgeren til ved at klikke på symbolet for den åbne bog af en firmadatakolonne som vist:

billede

Ovenstående billede viser en firmadatakolonne, kaldet "Master dokument Id". Denne kolonne er forbundet, via BDC, til en webtjeneste. Webtjenesten returnerer to kolonner med oplysninger: Dokument-ID og titel. Den forretningsmæssige formål her er at give en "dette dokument er baseret på" funktion. Brugerne vælger en "master" dokument, og når de gemmer, en event modtager kopier meta datafelter fra den refererede master.

Som standard, BDC-picker ser sådan her ud når jeg søger efter et dokument med ID'ET = "38":

clip_image002

Det er nyttigt, men ikke godt nok. Folk tænker ikke i id'er, de tror i titler og/eller andre metadata. Farvevælger kan du søge på andre kolonner (strømsparetilstand. Titel) men ikke vil vise den aktuelle liste af titler det fundet, bare deres DocId's som vist her:

clip_image002[1]

(Skærmbilledet er ikke så stor, fordi jeg ikke vælge en søgning, der returnerer nogen gyldige resultater, men du kan se, at hvis det havde fundet nogle resultater, Det ville kun have vist Docids, ikke titler).

Jeg søgte højt og lavt efter svar på dette og mislykkedes. Min kollega, de ærværdige Jonathan Bradshaw, havde stillet og løst problemet. Da jeg nåede til ham for at få hjælp, han pegede mig i den rigtige retning.

Konfigurere picker for at vise flere kolonner via "ShowInPicker" ejendom i ADF'EN:

<Ejendom Navn="ShowInPicker" Type="System.Boolean">True</Ejendom>

Mere detaljeret:

  <!-- Titel -->
  <TypeDescriptor TypeName="System.String" Navn="Titel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Egenskaber>
      <Ejendom Navn="DisplayByDefault" Type="System.Boolean">True</Ejendom>
      <Ejendom Navn="ShowInPicker" Type="System.Boolean">True</Ejendom>
    </Egenskaber>
  </TypeDescriptor>

Angiver denne egenskab indfører et mindre problem. Så snart du indstille det én gang, Du skal angive det for hver kolonne, du vil vise. I mit tilfælde, BDC-picker viste DocId som standard. Dog, Når jeg tilføjet "ShowInPicker" til titel, DocId ikke længere vises. Jeg løste det ved eksplicit at angive egenskaben ShowInPicker for Doc ID.

Her er resultatet:

billede

(Jeg vil forklare de mærkeligt udseende "168 – CamlSchema.xsd" konstruktion i et kommende blogindlæg. Kort sagt, Det er en sammenkædede streng, der giver mulighed for en lidt bedre brugeroplevelse).

Selvfølgelig, efter at have skrevet denne blog, Jeg gjorde netop en søgning efter "ShowInPicker" og fundet mange hits, herunder denne ene: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Det forklarer betydningen af ejendommen sammen med nogle andre gode BDC-ting.

</slutningen>

Abonner på min blog!

Technorati Tags:

Løsning til BDC-ADF Import fiasko: “Følgende fejl opstod:”

Jeg igen crafting BDC ADF filer i hånden (så at jeg kan opbygge min "stå af min græsplæne!" Cred) og ramte denne dejlige fejl:

billede

"Importen af programdefinitionen mislykkedes. Følgende fejl opstod:"

Som du kan se, der er en fejl, Men … det ikke gonna fortælle mig hvad det er.

I mit tilfælde, Problemet viste sig at jeg havde startede med en funktionel ADF for et andet projekt, der forbundet til en database og kørt en SQL forespørgsel mod en visning. I dette nye projekt, Jeg kalder en metode på en webtjeneste. Jeg havde strippet ud DB specifikke ting og tilføjet min web service ting, men kunne ikke opdatere den <LobSystem>'s type-attribut. Jeg skiftede det til "WebService" og jeg heldigvis flyttet til nyere og mere spændende importfejl, som blev håndteret med tiden.

Her er den forkerte LobSystem:

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

Dette er korrekt:

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

</slutningen>

Technorati Tags:

BDC synes en levedygtig erstatning For opslag

OPDATERING: Denne MSDN udstationering har nogle interessante bemærkninger fra JXJ baseret på hans, overvejende negativ, erfaringer går denne vej: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Vi har en business scenario hvor vi skal sammenkæde to dokumenter biblioteker via en fælles "dokument-ID" felt.

Vi bruger ofte en opslagskolonne til redskaber links som dette. Der er flere ulemper for opslagskolonner, tre af dem er:

  1. Kun én kolonne fra biblioteket opslag opslag kan være forbundet.
  2. Ydeevne: Kildebiblioteket kunne indeholder hundredvis af poster. Der er for mange poster i opslaget.
  3. Søg: Der er ingen integreret søgning. Jeg mener ikke i ordets MOSS søgning, men der er ingen måde at søge / filtrere efter flere kolonner fra kildedokumentbiblioteket og Find den kæde, du vil.

Bakket op af BDC, Vi kan bruge en "business data" kolonnetype, og det giver en overlegen søgning og giver mulighed for endda flere kolonner med data, der skal vises i listevisninger.

Jeg har haft nogle indledende succes med denne tilgang og planlægger at skrive mere om det.

Hvis du har arbejdet denne vinkel før og har kommentarer, behage lod!

</slutningen>

Technorati Tags:

Løsning til BDC-importfejl: “Der er beskrevet af TypeName for TypeDescriptor, kunne ikke indlæses …”

Jeg har arbejdet med BDC i dag, kodning ADF filer i hånden og generere mig nogle fejl. En sådan fejl:

Importen af programdefinitionen mislykkedes. Følgende fejl opstod: Der er beskrevet af TypeName for TypeDescriptor, kunne ikke indlæses. Parameternavnet: typeName fejl opstod på eller lige før Line: «35’ og holdning: '20'.

MOSS vises denne fejl, når jeg prøvede at importere filen ADF XML.

Jeg researchede Internets og fundet, at jeg var henvisninger forekomstnavn LOB (fra den <LobSystemInstance>) i min <TypeDescriptor> node, når jeg skal have refereres LOB navnet i sig selv (fra <LobSystem>).

Forkert:

<TypeDescriptor TypeName="Conchango.KeyValue, LOB forekomstnavn" Navn = "Nøgleværdi">

Rette:

<TypeDescriptor TypeName="Conchango.KeyValue, LOB navn" Navn = "Nøgleværdi">

Håbe denne ene sparer nogen en time eller to af tid.

</slutningen>

Abonner på min blog!

Technorati Tags:

En BDC-runtime error forklaret

Jeg lod en BDC-fejl i denne uge, der manifesterede sig på brugergrænsefladen og i den 12 hive log på kørselstidspunktet.

Første, denne dukkede op i brugergrænsefladen:

Der blev ikke fundet felter til at indsætte alle de id-værdier for at udføre en SpecificFinder MethodInstance med navnet korrekt … Sikre, at inputparametre har knyttet hver defineret for denne enhed id TypeDescriptors til.

Her er et skærmbillede:

clip_image001

Jeg kan også forårsage denne besked skal vises i den 12 hive log på vil (bruge min patenteret high-tech-don't-try-this-at-home "mystiske fejl" metode):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x høj undtagelse i BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Id-værdi ”, af Type ”, er ugyldigt. Forventede id-værdi af typen 'System.String'. på Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Enhed enhed, Objekt[] userValues, LobSystemInstance lobSystemInstance) på Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Se desiredView) på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() på Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Jeg søgte rundt og fundet nogle fører i den MSDN forum, men de var ikke nok for mig at forstå, hvad jeg gjorde forkert. Jeg iagttog et webcast af Ted Pattison at min virksomheden har squirreled væk på en server og kom til at indse mit problem.

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

            <Ejendom Navn="RdbCommandText" Type="System.String">
              <![CDATA[
                VÆLG 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, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, STATEN, POST-, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, UDVIDELSE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG fra dbo.PS_CARRIER_ID_VW med (NOLOCK)
                HVOR
                  (SETID <> 'ANDEL') og
                  (lavere(CARRIER_ID) >= lavere(@MinId)) og
                  (lavere(CARRIER_ID) <= lavere(@MaxId)) og
                  (lavere(DESCR) GERNE lavere(@InputDescr))
                ]]>
            </Ejendom>

Jeg var forudsat at SQL fra en person, DBA og jeg får at forstå, at det er en særlige Se de skabt bare for mig. Den unikke nøgle der er CARRIER_ID.

Her er den fejl jeg introduceret:

      <Identifikatorer>
        <Id Navn="CARRIER_ID" TypeName="System.String" />
        <Id Navn="DESCR" TypeName="System.String" /> 
</Identifikatorer>

Et sted langs linjen, Jeg havde formået at forvirre mig over betydningen af <Identifikatorer> og tilføjet DESCR, selvom det ikke er ligefrem et id. Jeg tog DESCR ud af de identifikatorer og presto! Det hele fungerede.

Jeg håber, at dette sparer nogen nogle sorg 🙂

Technorati Tags: , , ,

BDC ADF og din ven, CDATA

Jeg har bemærket nogle besværlige og unødvendige hånd-kodning af RdbCommandText i nogle eksempler (herunder MSDN dokumentation).

Jeg ønskede at påpege, at tilflyttere til BDC at kommandoer kan pakkes ind i et CDATA-koden i deres "naturlige" form. Så, denne akavet konstruktion:

<Ejendom Navn="RdbCommandText" Type="System.String">
Vælg dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (id &gt;= @MinId) OG (id &lt;= @MaxId)
</Ejendom>

kan blive bedre repræsenteret på denne måde:

<Ejendom Navn="RdbCommandText" Type="System.String">
<![CDATA[
Vælg dbo.MCRS_SETTLEMENT.id, dbo.MCRS_SETTLEMENT.Settlement fra dbo.MCRS_SETTLEMENT
HVOR (id >= @MinId) OG (id <= @MaxId)
]]>
</Ejendom>

</slutningen>

BDC-Primer

Intro til BDC

Funktionsdygtige eksempel: BDC ADF der tilsluttes SQL database med integreret bruger-id og adgangskode

Jeg havde brug for ledning op mos til en SQL database via BDC-. Henblik på test/POC, Jeg ønskede at integrere SQL konto brugerid og password i den automatiske Dokumentindføring. Startende med denne skabelon (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), Jeg oprettede en ADF, der forbinder til en bestemt forekomst af SQL server og logger ind med et bestemt bruger-id og password og vist i denne kodestump:

  <LobSystemInstances>
    <LobSystemInstance Navn="ClaimsInstance">
      <Egenskaber>
        <Ejendom Navn="AuthenticationMode" Type="System.String">PassThrough</Ejendom>
        <Ejendom Navn="DatabaseAccessProvider" Type="System.String">SqlServer</Ejendom>
        <Ejendom Navn="RdbConnection-datakilde" Type="System.String">faktiske serveractual forekomst</Ejendom>
        <Ejendom Navn="RdbConnection første butik" Type="System.String">faktiske indledende katalog</Ejendom>
        <Ejendom Navn="RdbConnection integreret sikkerhed" Type="System.String">SSPI</Ejendom>
        <Ejendom Navn="RdbConnection samle" Type="System.String">falsk</Ejendom>

        <!-- Disse er de vigtigste værdier: -->
        <Ejendom Navn="RdbConnection bruger-ID" Type="System.String">enfaktiske bruger-ID</Ejendom>
        <Ejendom Navn="RdbConnection adgangskode" Type="System.String">selve Password</Ejendom>
        <Ejendom Navn="RdbConnection Trusted_Connection" Type="System.String">falsk</Ejendom>

      </Egenskaber>
    </LobSystemInstance>
  </LobSystemInstances>

Det er ikke en bedste praksis, men det er nyttigt for en hurtig og enkel konfiguration til test. Dette var overraskende svært at finde ud af. Jeg har aldrig fundet en funktionel eksempel med søgeord:

  • ADF indlejret userid og password
  • integrere bruger-id og adgangskode i ADF'en
  • integrere bruger-id og adgangskode i ADF'en bdc
  • SharePoint BDC-primer
  • SharePoint integrere bruger-id og adgangskode i ADF'en

</slutningen>

Abonner på min blog.