Considerazioni sull'uso dell'adapter Siebel con SharePoint
Questo argomento contiene informazioni sui problemi che si potrebbero riscontrare durante l'uso dell'adapter Microsoft BizTalk per Le applicazioni eBusiness con Microsoft Office SharePoint Server, insieme alle risoluzioni. I problemi sono divisi in due categorie:
Problemi generali
Problemi relativi alle web part personalizzate
Problemi generali
Questa sezione contiene problemi che non hanno risoluzione o richiedono di modificare il file di definizione dell'applicazione per la risoluzione.
Problema 1: i dati di tipo semplice restituiti dal servizio WCF non vengono visualizzati
Spiegazione: Microsoft Office SharePoint Server prevede che i dati restituiti dal servizio WCF siano solo di tipo DataSet o Raccolta. Se i dati restituiti dal servizio WCF sono di tipo semplice, Microsoft Office SharePoint Server non visualizza i dati.
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server.
Problema 2: viene visualizzato un messaggio di errore se i dati restituiti dal servizio WCF sono NULL
Spiegazione: se i dati restituiti dal servizio WCF sono un valore NULL, Microsoft Office SharePoint Server visualizza un messaggio di errore. Si supponga, ad esempio, di usare la Web part Elenco dati business per l'istanza del metodo Finder e di cercare i clienti nel sistema Siebel in base a un'espressione di ricerca. L'espressione di ricerca specificata recupera un valore NULL. In questo caso, Microsoft Office SharePoint Server visualizzerà un messaggio di errore.
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server.
Problema 3: non viene visualizzata una matrice di tipi semplici restituiti dal servizio WCF
Spiegazione: se i dati restituiti dal servizio WCF sono una matrice di tipo semplice, Microsoft Office SharePoint Server non visualizza i dati. Inoltre, quando si esegue un'istanza di metodo in Business Data Catalog Definition Editor che restituisce una matrice di tipo semplice, viene visualizzato il seguente messaggio di errore: "La scheda di sistema back-end ha restituito una struttura incompatibile con i metadati corrispondenti (MethodInstance, Parameter o TypeDescriptor)."
Risoluzione: nessuna risoluzione. È una limitazione nota con Microsoft Office SharePoint Server e Business Data Catalog Definition Editor.
Problema 4: Impossibile importare un file di definizione dell'applicazione contenente un parametro di tipo complesso con più di 300 campi
Spiegazione: Microsoft Office SharePoint Server non può importare un file di definizione dell'applicazione con più di 300 campi nel parametro di tipo complesso restituito dal servizio WCF e viene visualizzato un messaggio di errore se si tenta di farlo. Ciò è dovuto alla limitazione di Microsoft Office SharePoint Server di non essere in grado di visualizzare più di 300 campi di un parametro di tipo complesso.
Risoluzione: usare l'editor di definizione business Data Catalog per limitare il numero di campi del parametro di tipo complesso a meno di o uguale a 300. A seconda delle esigenze, è possibile eliminare i campi del parametro di tipo complesso nell'Editor di definizione di Business Data Catalog che non è necessario visualizzare in Microsoft Office SharePoint Server. In alternativa, è anche possibile esportare il file di definizione dell'applicazione da Business Data Catalog Definition Editor con tutti i campi e quindi modificare il file di definizione dell'applicazione in un blocco note o in qualsiasi applicazione di creazione XML per eliminare i campi che non sono necessari per limitare il numero di campi a 300.
Problemi relativi alle web part personalizzate
Questa sezione contiene problemi che richiedono l'uso di web part personalizzate per la risoluzione. Per informazioni dettagliate sull'uso di una Web part personalizzata per risolvere i problemi che potrebbero verificarsi durante l'uso dell'adapter Siebel e di Microsoft Office SharePoint Server, vedere Usare una Web part personalizzata con l'adapter Siebel.
Problema 1: l'indice di un enumeratore viene visualizzato anziché il valore per il tipo di dati enumerazione
Spiegazione: se una web part Business Data List o Business Data Item in Microsoft Office SharePoint Server contiene dati di tipo enumerazione (un tipo distinto costituito da un set di costanti denominate denominate enumeratori), l'indice dell'enumeratore viene visualizzato anziché il relativo valore in Microsoft Office SharePoint Server. Ciò avviee perché le Web part Business Data List e Business Data Item stampano in modo errato i valori dei dati dei tipi di enumerazione nel portale di SharePoint.
Risoluzione: usare una web part personalizzata per stampare il valore dell'enumeratore anziché l'indice. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter Siebel. Ad esempio, è possibile usare l'esempio di codice seguente nella Web part per stampare i valori corretti dei dati dei tipi di enumerazione in 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>");
}
}
}
Problema 2: Impossibile specificare valori per gli elementi della matrice
Spiegazione: se il parametro di input del servizio WCF è una matrice, non è possibile specificare i valori agli elementi della matrice usando i filtri definiti nel file di definizione dell'applicazione creato usando l'editor di definizione business Data Catalog. Implica che non è possibile usare la Web part Business Data List o Business Data Item in Microsoft Office SharePoint Server per specificare i valori per questi parametri di input (elementi della matrice) al servizio WCF. Ciò è dovuto alla modalità di definizione delle matrici nel file di definizione dell'applicazione.
Risoluzione: usare una web part personalizzata per assegnare valori agli elementi della matrice. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter Siebel. Ad esempio, è possibile usare l'esempio di codice seguente nel passaggio 3 in "Problema 1: Indice di un enumeratore viene visualizzato anziché il valore per il tipo di dati enumerazione" per assegnare valori agli elementi della matrice.
/***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
Problema 3: Limitazione con la specifica dei valori NULL ai parametri di tipo complessi
Spiegazione: se non si specifica alcun valore per un parametro di tipo complesso da una web part in Microsoft Office SharePoint Server, NULL deve essere passato come valore per il parametro di tipo complesso al servizio WCF. Tuttavia, un valore non NULL viene passato per il parametro di tipo complesso e NULL viene passato per i relativi elementi figlio (di tipo semplice). In questo modo si verifica una mancata corrispondenza tra lo schema del messaggio previsto e lo schema del messaggio passato al servizio WCF. Di conseguenza, l'adapter Siebel potrebbe visualizzare un messaggio di errore.
Nota
Per individuare il valore predefinito di un parametro di tipo complesso quando non viene passato alcun valore da una web part in Microsoft Office SharePoint Server, usare il passaggio 2 nell'esempio di codice indicato in "Problema 1: Indice di un enumeratore viene visualizzato anziché il valore per il tipo di dati enumerazione".
Risoluzione: usare una Web part personalizzata per assegnare un valore NULL al parametro di tipo complesso quando non viene specificato alcun valore da una web part in Microsoft Office SharePoint Server. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter Siebel.
Problema 4: Limitazione con la visualizzazione di un singolo record in Microsoft Office SharePoint Server in base a più valori
Spiegazione: se si vuole visualizzare un singolo record in Microsoft Office SharePoint Server in base a più valori (parametri di input) da un sistema Siebel, non è possibile usare una delle tre web part (Elenco dati business, elemento dati business e elenco correlati ai dati aziendali) specificata nel passaggio 3: Creare un'applicazione SharePoint per recuperare dati da Siebel nell'esercitazione1: Presentazione dei dati da un sistema Siebel in un sito di SharePoint.
Risoluzione: è necessario usare una web part personalizzata per eseguire questa operazione. Per informazioni sull'uso di una web part personalizzata, vedere Usare una Web part personalizzata con l'adapter Siebel. Ad esempio, nel passaggio 3 in "Problema 1: indice di un enumeratore viene visualizzato anziché il valore per il tipo di dati enumerazione" è possibile modificare il codice per fornire valori per più di un parametro anziché fornire input a un singolo parametro del componente business.