Archives Catégorie: BDC

Astuce rapide: Les numéros de Version ADF BDC sont votre ami

Si vous êtes codage manuel ADF fichiers et fait beaucoup de cycles d'essai/importation/code, Utilisez le numéro de version pour rendre votre vie plus facile.

Je déteste l'admettre, mais jusqu'à cette semaine, J'étais toujours supprimant l'ADF et réimportant. Ce serait briser mes colonnes de données d'entreprise et faites-moi recâbler les. Tous les inutiles.

Ce fichier sous « il est évident, une fois que vous le voyez ».

Exemple:

<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" Nom="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Modifier cette version et ré-importer et la colonne de données entreprise existante utilise la version mise à jour automatiquement avec aucune configuration supplémentaire n'est requise.

</fin>

S'abonner à mon blog.

Tags Technorati:

Solution: Sélecteur de BDC ne montre qu'une colonne de résultats

Dans mes tentatives continue à fournir une colonne de recherche plus utile à l'aide de la BDC, J'ai frappé un mur avec le sélecteur de BDC. Si vous n'avez pas le voir, le sélecteur de BDC est semblable à un sélecteur de personnes sauf qu'elle fonctionne avec les colonnes de type « données entreprises ».

Vous accéder au sélecteur en cliquant sur l'icône du livre ouvert d'une colonne de données d'entreprise comme le montre:

image

L'image ci-dessus montre une colonne de données d'entreprise appelée « Master Document Id ». Cette colonne est connectée, par l'intermédiaire de BDC, à un service web. Le service web retourne deux colonnes d'informations: Titre et l'ID de document. L'entreprise ici vise à fournir un "ce document est basé sur" fonction. Les utilisateurs sélectionner un maître"" document et quand ils économisent, un récepteur d'événements copie des champs de données meta du maître référencé.

Par défaut, le sélecteur de BDC ressemble à ceci lorsqu'une recherche pour un document dont l'ID = « 38 »:

clip_image002

C'est utile, mais pas assez bon. Les gens ne pense pas qu'en ce qui concerne les IDs, ils pensent en termes de titres et/ou d'autres données meta. Le sélecteur permet d'effectuer des recherches sur les autres colonnes (e.g. Titre) mais ne montrent la liste réelle des titres qu'on trouvé, juste leur DocId s comme indiqué ici:

clip_image002[1]

(La capture d'écran n'est pas si grande parce que je n'avait pas choisir une recherche qui renvoie des résultats valides, mais vous pouvez voir que si on avait trouvé des résultats, Il aurait seulement montré de DocId, pas de titres).

J'ai cherché haut et bas pour la réponse à cela et n'a pas. Mon collègue, le vénérable Jonathan Bradshaw, a face et résolu ce problème. Quand j'ai tendu la main à lui de l'aide, Il m'a fait dans la bonne direction.

Configurer le sélecteur pour afficher plusieurs colonnes par l'intermédiaire de la ShowInPicker »" propriété dans le fichier ADF:

<Propriété Nom="ShowInPicker" Type="System.Boolean">True</Propriété>

Plus de détails:

  <!-- Titre -->
  <TypeDescriptor TypeName="System.String" Nom="Titre" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titre</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Propriétés>
      <Propriété Nom="DisplayByDefault" Type="System.Boolean">True</Propriété>
      <Propriété Nom="ShowInPicker" Type="System.Boolean">True</Propriété>
    </Propriétés>
  </TypeDescriptor>

Définition de cette propriété introduit un problème mineur. Dès que vous le réglez une fois, vous devez définir pour chaque colonne à afficher. Dans mon cas, Sélecteur de BDC a montré DocId par défaut. Cependant, une fois que j'ai ajouté « ShowInPicker" à titre, DocId ne s'affichée plus. J'ai résolu qu'en définissant explicitement la propriété ShowInPicker pour Doc ID.

Voici le résultat:

image

(J'expliquerai le riche » 168 – CamlSchema.xsd" construction dans un post de blog à venir. En bref, C'est une chaîne concaténée qui permet une légèrement meilleure expérience utilisateur).

Bien sûr, Après avoir écrit cette entrée de blog, J'ai juste fait une recherche pour « ShowInPicker" et a conclu de nombreux hits, y compris ce: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Il explique la signification de ces biens ainsi que quelques autres bonnes choses de la BDC.

</fin>

S'abonner à mon blog!

Tags Technorati:

Solution à l'échec d'importation BDC ADF: “L'erreur suivante s'est produite:”

J'étais une fois de plus artisanat fichiers ADF BDC à la main (alors que je peux construire mon "Descendez ma pelouse!" cred) et frapper cette belle erreur:

image

« Application définition importation échoué. L'erreur suivante s'est produite:"

Comme vous pouvez le voir, Il y a une erreur, mais … il ne va pas me dire ce que c'est.

Dans mon cas, la question s'est avéré que j'avais commencé avec un ADF fonctionnelle pour un projet différent qui connecté à une base de données et exécuter une requête SQL sur une vue. Dans ce nouveau projet, J'appelle une méthode de service web. J'avais supprimé les trucs spécifiques de DB et ajouté mes trucs de service web, mais n'a pas pu mettre à jour les <LobSystem>de l'attribut type. Je suis passé il à "WebService" et heureusement, je me suis déplacé d'erreurs d'importation plus récents et plus excitant, qui ont été traitées en temps opportun.

Voici le mauvais LobSystem:

<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Type = "base de données"
Version = "1.0.0.0" Nom = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

C'est correct:

<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" Nom = "xyzzy"
xmlns ="
http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

</fin>

Tags Technorati:

BDC semble un remplacement Viable pour les recherches

MISE À JOUR: Cette annonce de MSDN a des observations intéressantes de JXJ basé sur son, principalement négatif, expériences aller dans cette voie: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1

Nous avons un scénario d'entreprise où nous avons besoin de lier les deux bibliothèques de documents via un commun "ID de document" champ.

Nous utilisons souvent une colonne de recherche à implements liens comme ceci. Il y a plusieurs inconvénients à colonnes de recherche, trois d'entre eux sont:

  1. Une seule colonne de la bibliothèque de recherche de recherche peut être liée.
  2. Performance: La bibliothèque source peut contenir des centaines d'entrées. C'est trop d'entrées dans la recherche.
  3. Recherche: Il n'y a pas de recherche intégrée. Je ne veux pas dire dans le sens de la mousse de recherche, mais il n'y a aucun moyen de recherche / filtrer sur plusieurs colonnes de la bibliothèque de documents de source et recherchez le lien que vous voulez.

Soutenu par la BDC, Nous pouvons utiliser une "données d'entreprise" type de colonne et il fournit une recherche de qualité supérieure et permet même de plusieurs colonnes de données apparaissent dans les affichages de liste.

J'ai eu quelques succès préliminaire avec cette approche et l'intention d'écrire davantage à ce sujet.

Si vous avez travaillé cet angle avant et que vous avez des commentaires, s'il vous plaît partager!

</fin>

Tags Technorati:

Solution de BDC Import erreur: “Peut pas charger le Type décrit par la propriété TypeName de TypeDescriptor …”

J'ai travaillé avec BDC aujourd'hui, codage de fichiers ADF à la main et me générant des erreurs. Une telle erreur:

Importation de définition d'application a échoué. L'erreur suivante s'est produite: Peut pas charger le Type décrit par la propriété TypeName de TypeDescriptor. Nom du paramètre: typeName erreur a été rencontrée juste avant la ligne ou: 35’ et la Position: « 20 ».

MOUSSE affiche cette erreur lorsque j'ai essayé d'importer le fichier XML de l'ADF.

J'ai fait des recherches sur les Internets et trouvé que j'étais référençant le nom d'instance LOB (de la <LobSystemInstance>) dans mon <TypeDescriptor> nœud lorsque je devrais avoir référencé le nom LOB lui-même (De <LobSystem>).

Mauvais:

<TypeDescriptor TypeName="Conchango.KeyValue, Nom de l'Instance LOB" Nom = « KeyValue »>

Corriger:

<TypeDescriptor TypeName="Conchango.KeyValue, Nom de métier" Nom = « KeyValue »>

Espérons que celui-ci sauve quelqu'un, une heure ou deux de temps.

</fin>

S'abonner à mon blog!

Tags Technorati:

Une erreur d'exécution BDC a expliqué

J'a provoqué une erreur BDC cette semaine qui se manifeste sur l'interface utilisateur et en le 12 journal de la ruche lors de l'exécution.

Première, Cela apparaît dans l'interface utilisateur:

Impossible de trouver les champs à insérer toutes les valeurs d'identificateur pour exécuter correctement une SpecificFinder MethodInstance avec nom … S'assurer que les paramètres d'entrée comportent des TypeDescriptors associés à chaque identificateur défini pour cette entité.

Voici une capture d'écran:

clip_image001

Je pourrais également provoquer ce message d'apparaître dans la 12 journal de la ruche à sera (à l'aide de mon high-tech-don't-try-this-at-home breveté « erreurs mystérieuses" méthode):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C données de SharePoint Portal Server Business 6q4x haute Exception dans BusinessDataWebPart.OnPreRender: System.InvalidOperationException: La valeur de l'identificateur ”, de Type ”, n'est pas valide. Valeur de l'identificateur attendu de Type « System.String ». à Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Objet[] subIdentifierValues, LobSystemInstance lobSystemInstance) à Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entité de l'entité, Objet[] userValues, LobSystemInstance lobSystemInstance) à Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vue desiredView) à Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() à Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

J'ai cherché et trouvé quelques pistes dans la Forum MSDN, mais ils n'étaient pas assez pour me faire comprendre ce que je faisais mal. J'ai regardé un webcast par Ted Pattison que mon société a aperçut de loin sur un serveur et est venu se rendre compte de mon problème.

Dans mon fichier ADF, Je me connecte à une base de données SQL comme indiqué:

            <Propriété Nom="RdbCommandText" Type="System.String">
              <![CDATA[
                SÉLECTIONNEZ SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      PAYS, ADRESSE1, ADRESSE2, ADDRESS3, ADDRESS4, VILLE, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COMTÉ DE, ÉTAT, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TÉLÉPHONE, EXTENSION, TÉLÉCOPIEUR, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW avec (NOLOCK)
                OÙ
                  (SETID <> « ACTION ») et
                  (plus bas(CARRIER_ID) >= plus faible(@MinId)) et
                  (plus bas(CARRIER_ID) <= plus faible(@ MaxId)) et
                  (plus bas(DESCR) COMME plus bas(@InputDescr))
                ]]>
            </Propriété>

J'ai obtenu que SQL d'une personne DBA et je me donne à comprendre que c'est un spécial ils ont créé juste pour moi. La clé unique il est CARRIER_ID.

Voici le bug, j'ai présenté:

      <Identificateurs>
        <Identificateur de Nom="CARRIER_ID" TypeName="System.String" />
        <Identificateur de Nom="DESCR" TypeName="System.String" /> 
</Identificateurs>

Quelque part le long de la ligne, J'avais réussi à me confondre au sens de <Identificateurs> et ajouté DESCR, même si ce n'est pas réellement un identificateur. J'ai pris DESCR hors de l'ensemble des identifiants et hop! Tout cela a fonctionné.

J'espère que cela sauve quelqu'un quelque chagrin 🙂

Tags Technorati: , , ,

BDC ADF et votre ami, CDATA

J'ai remarqué que certains maladroit et inutile main-codage de RdbCommandText en quelques exemples (y compris la documentation MSDN).

Je voulais souligner pour les nouveaux arrivants à BDC que les commandes peuvent être enveloppés à l'intérieur d'une balise CDATA dans leur naturel »" formulaire. Si, Cette construction maladroite:

<Propriété Nom="RdbCommandText" Type="System.String">
Sélectionnez dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement from dbo.MCRS_SETTLEMENT
OÙ (ID &gt;= @MinId) ET (ID &lt;= @ MaxId)
</Propriété>

peut être mieux représentées de cette façon:

<Propriété Nom="RdbCommandText" Type="System.String">
<![CDATA[
Sélectionnez dbo.MCRS_SETTLEMENT.ID, dbo.MCRS_SETTLEMENT.Settlement from dbo.MCRS_SETTLEMENT
OÙ (ID >= @MinId) ET (ID <= @ MaxId)
]]>
</Propriété>

</fin>

ABC de la BDC

Intro à la BDC

Exemple fonctionnel: ADF BDC qui se connecte à la base de données SQL avec embedded user id et mot de passe

J'avais besoin de fil de mousse pour une base de données SQL via BDC. À des fins de test/POC, J'ai voulu intégrer SQL compte id d'utilisateur et mot de passe dans le fichier ADF. À partir de ce modèle (http://msdn2.microsoft.com/en-us/library/ms564221.aspx), J'ai créé un ADF qui se connecte à une instance particulière de SQL server et qui ouvre une session avec un id utilisateur spécifique et un mot de passe et dans cet extrait de code:

  <LobSystemInstances>
    <LobSystemInstance Nom="ClaimsInstance">
      <Propriétés>
        <Propriété Nom="AuthenticationMode" Type="System.String">PassThrough</Propriété>
        <Propriété Nom="DatabaseAccessProvider" Type="System.String">SqlServer</Propriété>
        <Propriété Nom="RdbConnection Data Source" Type="System.String">instance de réelles serveractual</Propriété>
        <Propriété Nom="RdbConnection Initial Catalog" Type="System.String">catalogue initial réel</Propriété>
        <Propriété Nom="RdbConnection sécurité intégrée" Type="System.String">SSPI</Propriété>
        <Propriété Nom="Mise en commun des RdbConnection" Type="System.String">faux</Propriété>

        <!-- Ce sont les valeurs clés: -->
        <Propriété Nom="ID utilisateur RdbConnection" Type="System.String">unes ID utilisateur</Propriété>
        <Propriété Nom="Mot de passe RdbConnection" Type="System.String">mot de passe réel</Propriété>
        <Propriété Nom="RdbConnection Trusted_Connection" Type="System.String">faux</Propriété>

      </Propriétés>
    </LobSystemInstance>
  </LobSystemInstances>

Il n'est pas une bonne pratique, mais il est utile pour une configuration simple et rapide pour les tests. C'était étonnamment difficile à comprendre. J'ai jamais trouvé un exemple fonctionnel avec les mots clés de recherche:

  • ADF incorporé le nom d'utilisateur et mot de passe
  • incorporer les id utilisateur et mot de passe de l'adf
  • incorporer les id utilisateur et mot de passe dans l'adf bdc
  • ABC des bdc SharePoint
  • SharePoint incorporer des id utilisateur et mot de passe de l'adf

</fin>

S'abonner à mon blog.