Consideraciones al usar el adaptador de Siebel con SharePoint
Este tema contiene información sobre los problemas que pueden surgir al usar microsoft BizTalk Adapter for Siebel eBusiness Applications con Microsoft Office SharePoint Server, junto con resoluciones. Los problemas se dividen en dos categorías:
Problemas generales
Problemas relacionados con elementos web personalizados
Problemas generales
Esta sección contiene problemas que no tienen ninguna resolución o requieren que modifique el archivo de definición de aplicación para la resolución.
Problema 1: Los datos de tipo simples devueltos por el servicio WCF no se muestran
Explicación: Microsoft Office SharePoint Server espera que los datos devueltos por el servicio WCF sean solo de tipo DataSet o Collection. Si los datos devueltos por el servicio WCF son de tipo simple, Microsoft Office SharePoint Server no muestra los datos.
Resolución: sin resolución. Se trata de una limitación conocida con Microsoft Office SharePoint Server.
Problema 2: se muestra un mensaje de error si los datos devueltos por el servicio WCF son NULL
Explicación: Si los datos devueltos por el servicio WCF son un valor NULL, Microsoft Office SharePoint Server muestra un mensaje de error. Por ejemplo, supongamos que usa el elemento web Lista de datos profesionales para la instancia del método Finder y busca clientes en el sistema Siebel basado en una expresión de búsqueda. La expresión de búsqueda que especificó captura un valor NULL. En este caso, Microsoft Office SharePoint Server mostrará un mensaje de error.
Resolución: sin resolución. Se trata de una limitación conocida con Microsoft Office SharePoint Server.
Problema 3: No se muestra una matriz de tipo simple devuelta por el servicio WCF
Explicación: Si los datos devueltos por el servicio WCF son una matriz de tipo simple, Microsoft Office SharePoint Server no muestra los datos. Además, al ejecutar una instancia de método en business Data Catalog Editor de definiciones que devuelve una matriz de tipo simple, se muestra el siguiente mensaje de error: "El adaptador del sistema back-end devolvió una estructura incompatible con los metadatos correspondientes (MethodInstance, Parameter o TypeDescriptor)."
Resolución: sin resolución. Se trata de una limitación conocida con El Editor de definiciones de Microsoft Office SharePoint Server y Business Data Catalog.
Problema 4: No se puede importar un archivo de definición de aplicación que contenga un parámetro de tipo complejo que tenga más de 300 campos
Explicación: Microsoft Office SharePoint Server no puede importar un archivo de definición de aplicación que tenga más de 300 campos en el parámetro de tipo complejo devuelto por el servicio WCF y muestra un mensaje de error si intenta hacerlo. Esto se debe a la limitación de Microsoft Office SharePoint Server de no poder mostrar más de 300 campos de un parámetro de tipo complejo.
Resolución: use el Editor de definiciones de Business Data Catalog para limitar el número de campos del parámetro de tipo complejo a menos o igual que 300. Según sus necesidades, puede eliminar los campos del parámetro de tipo complejo en el Editor de definiciones de Business Data Catalog que no necesita mostrar en Microsoft Office SharePoint Server. Como alternativa, también puede exportar el archivo de definición de aplicación de Business Data Catalog Editor de definiciones con todos los campos y, a continuación, modificar el archivo de definición de aplicación en un Bloc de notas o cualquier aplicación de creación XML para eliminar los campos que no son necesarios para limitar el número de campos a 300.
Problemas relacionados con elementos web personalizados
Esta sección contiene problemas que requieren el uso de elementos web personalizados para la resolución. Para obtener información detallada sobre el uso de un elemento web personalizado para resolver problemas que podrían surgir al trabajar con el adaptador de Siebel y Microsoft Office SharePoint Server, vea Usar un elemento web personalizado con el adaptador de Siebel.
Problema 1: se muestra el índice de un enumerador en lugar del valor del tipo de datos de enumeración
Explicación: Si un elemento web lista de datos profesionales o elemento de datos profesionales de Microsoft Office SharePoint Server contiene datos de tipo de enumeración (un tipo distinto que consta de un conjunto de constantes con nombre denominadas enumeradores), se muestra el índice del enumerador en lugar de su valor en Microsoft Office SharePoint Server. Esto se debe a que los elementos web Lista de datos profesionales y Elementos de datos profesionales imprimen incorrectamente los valores de los datos de tipo de enumeración en el portal de SharePoint.
Resolución: use un elemento web personalizado para imprimir el valor del enumerador en lugar del índice. Para obtener información sobre el uso de un elemento web personalizado, vea Usar un elemento web personalizado con el adaptador de Siebel. Por ejemplo, puede usar el siguiente ejemplo de código en el elemento web para imprimir los valores correctos de los datos de tipo de enumeración en 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: No se pueden especificar valores para los elementos de matriz
Explicación: Si el parámetro de entrada del servicio WCF es una matriz, no puede especificar valores en los elementos de matriz mediante filtros definidos en el archivo de definición de aplicación creado mediante el Editor de definiciones de Business Data Catalog. Implica que no se puede usar el elemento web Lista de datos profesionales o Elemento de datos profesionales de Microsoft Office SharePoint Server para especificar valores para estos parámetros de entrada (elementos de matriz) al servicio WCF. Esto se debe a la forma en que las matrices se definen en el archivo de definición de aplicación.
Resolución: use un elemento web personalizado para asignar valores a elementos de matriz. Para obtener información sobre el uso de un elemento web personalizado, vea Usar un elemento web personalizado con el adaptador de Siebel. Por ejemplo, puede usar el ejemplo de código siguiente en el paso 3 de "Problema 1: Se muestra el índice de un enumerador en lugar del valor del tipo de datos de enumeración" para asignar valores a los elementos de matriz.
/***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: Limitación con la especificación de valores NULL en parámetros de tipo complejo
Explicación: Si no especifica ningún valor para un parámetro de tipo complejo de un elemento web en Microsoft Office SharePoint Server, se debe pasar NULL como valor para el parámetro de tipo complejo al servicio WCF. Sin embargo, se pasa un valor distinto de NULL para el parámetro de tipo complejo y se pasa NULL para sus elementos secundarios (de tipo simple). Esto provoca una discrepancia entre el esquema de mensajes esperado y el esquema de mensaje que se pasa al servicio WCF. Como resultado, el adaptador de Siebel puede mostrar un mensaje de error.
Nota
Para averiguar el valor predeterminado de un parámetro de tipo complejo cuando no se pasa ningún valor desde un elemento web en Microsoft Office SharePoint Server, use el paso 2 del ejemplo de código mencionado en "Problema 1: Se muestra el índice de un enumerador en lugar del valor del tipo de datos de enumeración".
Resolución: use un elemento web personalizado para asignar un valor NULL al parámetro de tipo complejo cuando no se especifica ningún valor desde un elemento web en Microsoft Office SharePoint Server. Para obtener información sobre el uso de un elemento web personalizado, vea Usar un elemento web personalizado con el adaptador de Siebel.
Problema 4: Limitación con la visualización de un único registro en Microsoft Office SharePoint Server basado en varios valores
Explicación: Si desea mostrar un único registro en Microsoft Office SharePoint Server basado en varios valores (parámetros de entrada) de un sistema Siebel, no puede usar ninguno de los tres elementos web (lista de datos profesionales, elemento de datos profesionales y lista relacionada con datos profesionales) especificado en paso 3: Crear una aplicación de SharePoint para recuperar datos de Siebel en el Tutorial 1: Presentar datos de un sistema Siebel en un sitio de SharePoint.
Resolución: debe usar un elemento web personalizado para hacerlo. Para obtener información sobre el uso de un elemento web personalizado, vea Usar un elemento web personalizado con el adaptador de Siebel. Por ejemplo, en el paso 3 de "Problema 1: se muestra el índice de un enumerador en lugar del valor del tipo de datos de enumeración", puede modificar el código para proporcionar valores para más de un parámetro en lugar de proporcionar entrada a un único parámetro de componente de negocio.