Considérations sur l’utilisation de l’adaptateur Siebel avec SharePoint
Cette rubrique contient des informations sur les problèmes que vous pouvez rencontrer lors de l’utilisation de l’adaptateur Microsoft BizTalk pour Siebel eBusiness Applications avec Microsoft Office SharePoint Server, ainsi que des résolutions. Les problèmes sont répartis en deux catégories :
Problèmes d’ordre général
Problèmes impliquant des composants WebPart personnalisés
Problèmes généraux
Cette section contient des problèmes qui n’ont pas de résolution ou qui vous obligent à modifier le fichier de définition d’application pour la résolution.
Problème 1 : Les données de type simple retournées par le service WCF ne sont pas affichées
Explication : Microsoft Office SharePoint Server s’attend à ce que les données retournées par le service WCF soient de type DataSet ou Collection uniquement. Si les données retournées par le service WCF sont de type simple, Microsoft Office SharePoint Server n’affiche pas les données.
Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server.
Problème 2 : un message d’erreur s’affiche si les données retournées par le service WCF sont NULL
Explication : Si les données retournées par le service WCF sont une valeur NULL, Microsoft Office SharePoint Server affiche un message d’erreur. Par exemple, supposons que vous utilisez le composant WebPart Liste de données métiers pour la méthode Finder instance et que vous recherchez des clients dans le système Siebel en fonction d’une expression de recherche. L’expression de recherche que vous avez spécifiée extrait une valeur NULL. Dans ce cas, Microsoft Office SharePoint Server affiche un message d’erreur.
Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server.
Problème 3 : Un tableau de type simple retourné par le service WCF n’est pas affiché
Explication : Si les données retournées par le service WCF sont un tableau de type simple, Microsoft Office SharePoint Server n’affiche pas les données. En outre, lorsque vous exécutez une méthode instance dans l’Éditeur de définition Data Catalog d’entreprise qui retourne un tableau de type simple, le message d’erreur suivant s’affiche : « L’adaptateur système principal a retourné une structure incompatible avec les métadonnées correspondantes (MethodInstance, Parameter ou TypeDescriptor). »
Résolution : Aucune résolution. Il s’agit d’une limitation connue avec Microsoft Office SharePoint Server et Business Data Catalog Definition Editor.
Problème 4 : Impossible d’importer un fichier de définition d’application qui contient un paramètre de type complexe comportant plus de 300 champs
Explication : Microsoft Office SharePoint Server ne peut pas importer un fichier de définition d’application contenant plus de 300 champs dans le paramètre de type complexe retourné par le service WCF et affiche un message d’erreur si vous essayez de le faire. Cela est dû à la limitation de Microsoft Office SharePoint Server qui ne peut pas afficher plus de 300 champs d’un paramètre de type complexe.
Résolution : utilisez l’Éditeur de définition de Data Catalog d’entreprise pour limiter le nombre de champs du paramètre de type complexe à 300. Selon vos besoins, vous pouvez supprimer les champs du paramètre de type complexe dans l’Éditeur de définition Data Catalog d’entreprise dont vous n’avez pas besoin pour être affichés dans Microsoft Office SharePoint Server. Vous pouvez également exporter le fichier de définition d’application à partir de Business Data Catalog Definition Editor avec tous les champs, puis modifier le fichier de définition d’application dans un bloc-notes ou toute application de création XML pour supprimer les champs qui ne sont pas requis afin de limiter le nombre de champs à 300.
Problèmes impliquant des composants WebPart personnalisés
Cette section contient les problèmes qui nécessitent l’utilisation de composants WebPart personnalisés pour la résolution. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé pour résoudre les problèmes qui peuvent survenir lors de l’utilisation de l’adaptateur Siebel et de Microsoft Office SharePoint Server, voir Utiliser un composant WebPart personnalisé avec l’adaptateur Siebel.
Problème 1 : l’index d’un énumérateur s’affiche à la place de la valeur du type de données enum
Explication : si une liste de données métiers ou un composant WebPart Élément de données métiers dans Microsoft Office SharePoint Server contient des données de type enum (un type distinct constitué d’un ensemble de constantes nommées appelées énumérateurs), l’index de l’énumérateur s’affiche au lieu de sa valeur dans Microsoft Office SharePoint Server. Cela est dû au fait que les composants WebPart Liste de données métiers et Élément de données métiers impriment incorrectement les valeurs des données de type enum dans le portail SharePoint.
Résolution : utilisez un composant WebPart personnalisé pour imprimer la valeur de l’énumérateur au lieu de l’index. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur Siebel. Par exemple, vous pouvez utiliser l’exemple de code suivant dans votre composant WebPart pour imprimer les valeurs correctes des données de type enum sur Microsoft Office SharePoint Server.
namespace CustomWebpart
{
public class CustomWebPart : WebPart
{
private string displayText = "Hello World!";
[WebBrowsable(true), Personalizable(true)]
public string DisplayText
{
get { return displayText; }
set { displayText = value; }
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
string SearchExpr = "[Address Name] LIKE \"*\"";
object ElementType = null;
/***Step 1: Get the required entity and method.***/
LobSystem newSystem = ApplicationRegistry.GetLobSystems()["WebServiceLobSystem"]; // Name specified in application definition file
LobSystemInstance newSystemInstance = newSystem.GetLobSystemInstances()["Siebel_Instance"]; // Name specified in application definition file
Entity CategoryEntity = newSystem.GetEntities()["Siebel_Method_Name"]; // Name specified in application definition file
Method newMethod = CategoryEntity.GetMethods()["Query"]; // Name specified in application definition file
MethodInstance methodInstance = newMethod.GetMethodInstances()["MethodInstance0"]; // Name specified in application definition file
/***Step 2: Get the list of input parameters.***/
Object[] args = methodInstance.GetMethod().CreateDefaultParameterInstances(methodInstance); // Get default value of the input parameter
Object[] ArgsInput = new Object[args.Length];
/***Step 3: Assign them required values.***/
//Assigning values to a complex type parameter. Index of this parameter is 3rd in args array.
/*** Complex Type Parameter is defined as follows:
<Parameter Direction="In" Name="BusinessAddressQueryInputRecord">
<TypeDescriptor TypeName="BDC.BusinessAddressQueryInputRecord,WebServiceLobSystem" Name="BusinessAddressQueryInputRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.String, ...." Name="SearchExpr"></TypeDescriptor>
<TypeDescriptor TypeName="System.String, ...." Name="SortSpec"></TypeDescriptor>
<TypeDescriptor TypeName="System.String[], ...." IsCollection="true" Name="QueryFields"></TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
* We are assigning value to Parameter SearchExpr. ***/
Assembly asm = Assembly.GetAssembly(args[2].GetType());
Type t = asm.GetType(args[2].GetType().ToString()); // Get type of the parameter
FieldInfo[] FI = t.GetFields();
ElementType = Activator.CreateInstance(t);
ElementType.GetType().GetFields()[0].SetValue(ElementType, (Object)SearchExpr);
ArgsInput[2] = ElementType; // ArgsInput is fed as input while executing Method Instance.
/***Step 4: Execute the particular method instance using the required value.***/
IEntityInstanceEnumerator prodEntityInstanceEnumerator = (IEntityInstanceEnumerator)CategoryEntity.Execute(methodInstance, newSystemInstance, ref ArgsInput); //Method instance of type Finder is being used here.
/***Step 5: Display the output on the custom Web Part in Microsoft Office SharePoint Server.***/
writer.Write("<table>");
while (prodEntityInstanceEnumerator.MoveNext())
{
IEntityInstance IE = prodEntityInstanceEnumerator.Current;
writer.Write("<tr>");
foreach (Field f in CategoryEntity.GetFinderView().Fields)
{
writer.Write("<td>");
writer.Write(IE[f]);
writer.Write("</td>");
}
writer.Write("</tr>");
}
writer.Write("</table>");
}
}
}
Problème 2 : Impossible de spécifier des valeurs pour les éléments du tableau
Explication : Si le paramètre d’entrée du service WCF est un tableau, vous ne pouvez pas spécifier de valeurs aux éléments du tableau à l’aide de filtres définis dans le fichier de définition d’application créé à l’aide de l’Éditeur de définition de Data Catalog métier. Cela implique que vous ne pouvez pas utiliser le composant WebPart Liste de données métiers ou Élément de données métiers dans Microsoft Office SharePoint Server pour spécifier des valeurs pour ces paramètres d’entrée (éléments de tableau) dans le service WCF. Cela est dû à la façon dont les tableaux sont définis dans le fichier de définition d’application.
Résolution : utilisez un composant WebPart personnalisé pour affecter des valeurs à des éléments de tableau. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur Siebel. Par exemple, vous pouvez utiliser l’exemple de code suivant à l’étape 3 dans « Problème 1 : L’index d’un énumérateur est affiché au lieu de la valeur du type de données enum » pour affecter des valeurs aux éléments de tableau.
/***Assign required values to parameters of type array.***/
/***Assumption is that the ith parameter of Method is of type Array and all the simple type elements in the array are of type string***/
Type t = asm.GetType(args[i].GetType().ToString()); // Get type of the parameter
Type TElement = t.GetElementType(); // Getting type of element of array
int index = 5; //Size of Array
Array ElementArray = Array.CreateInstance(TElement, index); //Creating an array of length: index
for (int ind = 0; ind < index; ind++)
{
//Creating an instance of an element of array
object ElementType = Activator.CreateInstance(TElement);
FieldInfo[] FI = ElementType.GetType().GetFields();
for (int f = 0; f \< FI.Length; f++)
{
ElementType.GetType().GetFields()[f].SetValue(ElementType, (Object)"ElementValue");
}
ElementArray.SetValue(ElementType, ind);
}
ArgsInput[i] = (object)ElementArray; // As shown in sample, ArgsInput is fed as input while executing Method Instance
Problème 3 : Limitation de la spécification de valeurs NULL aux paramètres de type complexes
Explication : si vous ne spécifiez aucune valeur pour un paramètre de type complexe à partir d’un composant WebPart dans Microsoft Office SharePoint Server, NULL doit être transmis comme valeur du paramètre de type complexe au service WCF. Toutefois, une valeur non NULL est passée pour le paramètre de type complexe, et NULL est passé pour ses éléments enfants (de type simple). Cela entraîne une incompatibilité entre le schéma de message attendu et le schéma de message transmis au service WCF. Par conséquent, l’adaptateur Siebel peut afficher un message d’erreur.
Notes
Pour connaître la valeur par défaut d’un paramètre de type complexe lorsqu’aucune valeur n’est transmise à partir d’un composant WebPart dans Microsoft Office SharePoint Server, utilisez l’étape 2 dans l’exemple de code mentionné dans « Problème 1 : L’index d’un énumérateur s’affiche à la place de la valeur du type de données enum ».
Résolution : utilisez un composant WebPart personnalisé pour affecter une valeur NULL au paramètre de type complexe lorsqu’aucune valeur n’est spécifiée à partir d’un composant WebPart dans Microsoft Office SharePoint Server. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur Siebel.
Problème 4 : Limitation de l’affichage d’un enregistrement unique dans Microsoft Office SharePoint Server basé sur plusieurs valeurs
Explication : Si vous souhaitez afficher un seul enregistrement dans Microsoft Office SharePoint Server en fonction de plusieurs valeurs (paramètres d’entrée) à partir d’un système Siebel, vous ne pouvez pas utiliser les trois composants WebPart (Liste de données métiers, Élément de données métiers et Liste associée aux données métiers) spécifiés à l’Étape 3 : Créer une application SharePoint pour récupérer des données à partir de Siebel dans le tutoriel 1 : Présentation des données à partir d’un système Siebel sur un site SharePoint.
Résolution : Pour ce faire, vous devez utiliser un composant WebPart personnalisé. Pour plus d’informations sur l’utilisation d’un composant WebPart personnalisé, consultez Utiliser un composant WebPart personnalisé avec l’adaptateur Siebel. Par exemple, à l’étape 3 de « Problème 1 : l’index d’un énumérateur est affiché au lieu de la valeur du type de données enum », vous pouvez modifier le code pour fournir des valeurs pour plusieurs paramètres au lieu de fournir une entrée à un seul paramètre de composant métier.