Freigeben über


Überlegungen zur Verwendung des Oracle-Business Suite-Adapters mit SharePoint

Dieses Thema enthält Informationen zu den Problemen, die bei der Verwendung des Microsoft BizTalk-Adapters für Oracle E-Business Suite mit Microsoft Office SharePoint Server auftreten können, sowie Lösungen. Die Probleme sind in zwei Kategorien unterteilt:

  • Allgemeine Probleme

  • Probleme mit benutzerdefinierten Webparts

Allgemeine Probleme

Dieser Abschnitt enthält Probleme, die keine Lösung haben.

Problem 1: Die vom WCF-Dienst zurückgegebenen einfachen Typdaten werden nicht angezeigt.

Erklärung: Microsoft Office SharePoint Server erwartet, dass die vom WCF-Dienst zurückgegebenen Daten nur den Typ DataSet oder Collection aufweisen. Wenn die vom WCF-Dienst zurückgegebenen Daten vom einfachen Typ sind, werden die Daten von Microsoft Office SharePoint Server nicht angezeigt.

Lösung: Keine Auflösung. Dies ist eine bekannte Einschränkung bei Microsoft Office SharePoint Server.

Problem 2: Eine Fehlermeldung wird angezeigt, wenn die vom WCF-Dienst zurückgegebenen Daten NULL sind.

Erklärung: Wenn die vom WCF-Dienst zurückgegebenen Daten null sind, zeigt Microsoft Office SharePoint Server eine Fehlermeldung an. Angenommen, Sie verwenden das Business Data List-Webpart für die Finder-Methode instance und suchen in Oracle E-Business Suite basierend auf einem Suchausdruck nach Kunden. Der angegebene Suchausdruck ruft einen NULL-Wert ab. In diesem Fall zeigt Microsoft Office SharePoint Server eine Fehlermeldung an.

Lösung: Keine Auflösung. Dies ist eine bekannte Einschränkung bei Microsoft Office SharePoint Server.

Problem 3: Ein Array des einfachen Typs, das vom WCF-Dienst zurückgegeben wird, wird nicht angezeigt.

Erklärung: Wenn es sich bei den vom WCF-Dienst zurückgegebenen Daten um ein Array vom einfachen Typ handelt, werden die Daten von Microsoft Office SharePoint Server nicht angezeigt. Wenn Sie eine Methode instance im Business Data Catalog Definition Editor ausführen, die ein Array vom einfachen Typ zurückgibt, wird außerdem die folgende Fehlermeldung angezeigt: "Der Back-End-Systemadapter hat eine Struktur zurückgegeben, die mit den entsprechenden Metadaten nicht kompatibel ist (MethodInstance, Parameter oder TypeDescriptor)."

Lösung: Keine Auflösung. Dies ist eine bekannte Einschränkung mit Microsoft Office SharePoint Server und Business Data Catalog Definition Editor.

Problem 4: Eine Anwendungsdefinitionsdatei, die einen komplexen Typparameter mit mehr als 300 Feldern enthält, kann nicht importiert werden.

Erklärung: Microsoft Office SharePoint Server kann keine Anwendungsdefinitionsdatei importieren, die mehr als 300 Felder im komplexen Typparameter enthält, der vom WCF-Dienst zurückgegeben wird, und zeigt eine Fehlermeldung an, wenn Sie dies versuchen. Dies liegt daran, dass Microsoft Office SharePoint Server nicht mehr als 300 Felder eines komplexen Typparameters anzeigen kann.

Lösung: Verwenden Sie den Business Data Catalog Definition Editor, um die Anzahl der Felder des komplexen Typparameters auf weniger als oder gleich 300 zu beschränken. Je nach Anforderung können Sie die Felder des komplexen Typparameters im Business Data Catalog Definition Editor löschen, die nicht in Microsoft Office SharePoint Server angezeigt werden müssen. Alternativ können Sie die Anwendungsdefinitionsdatei auch aus dem Business Data Catalog Definition Editor mit allen Feldern exportieren und dann die Anwendungsdefinitionsdatei in einem Editor oder einer beliebigen XML-Erstellungsanwendung ändern, um die Felder zu löschen, die nicht erforderlich sind, um die Anzahl der Felder auf 300 zu begrenzen.

Probleme mit benutzerdefinierten Webparts

Dieser Abschnitt enthält Probleme, die die Verwendung eines benutzerdefinierten Webparts für eine Lösung erfordern. Ausführliche Informationen zur Verwendung eines benutzerdefinierten Webparts zum Beheben von Problemen, die beim Arbeiten mit dem Oracle E-Business-Adapter und Microsoft Office SharePoint Server auftreten können, finden Sie unter Verwenden eines benutzerdefinierten Webparts mit Oracle E-Business Suite.

Problem 1: Einschränkung beim Anzeigen eines einzelnen Datensatzes in Microsoft Office SharePoint Server basierend auf mehreren Werten

Erklärung: Wenn Sie einen einzelnen Datensatz in Microsoft Office SharePoint Server basierend auf mehreren Werten (Eingabeparametern) von Oracle E-Business Suite anzeigen möchten, können Sie keines der drei Webparts (Geschäftsdatenliste, Geschäftsdatenelement und Liste mit Geschäftsdaten) verwenden, die in Schritt 3: Erstellen einer SharePoint-Anwendung zum Abrufen von Daten aus Oracle E-Business Suite im Tutorial angegeben sind : Präsentieren von Daten aus der Oracle E-Business Suite auf einer SharePoint-Website.

Lösung: Dazu müssen Sie ein benutzerdefiniertes Webpart verwenden. Informationen zur Verwendung eines benutzerdefinierten Webparts finden Sie unter Verwenden eines benutzerdefinierten Webparts mit Oracle E-Business Suite. In "Schritt 1: Erstellen eines benutzerdefinierten Webparts" dieses Themas können Sie das folgende Codebeispiel in Schritt 5 verwenden. Im folgenden Codebeispiel werden BankCountry und BankKey als Eingabeparameter verwendet und dann als einzelner Datensatz in Microsoft Office SharePoint Server angezeigt.

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 BankCountry = "US";  
            string BankKey = "134329042";  
  
/***Step 1: Get the required entity and method.***/  
  
            LobSystem newSystem = ApplicationRegistry.GetLobSystems()["BAPI_BANK_GETDETAIL"]; // Name specified in application definition file  
            LobSystemInstance newSystemInstance = newSystem.GetLobSystemInstances()["BAPI_BANK_GETDETAIL_Instance"]; // Name specified in application definition file  
            Entity CategoryEntity = newSystem.GetEntities()["Entity"]; // Name specified in application definition file  
            Method newMethod = CategoryEntity.GetMethods()["BAPI_BANK_GETDETAIL"]; // Name specified in application definition file  
            MethodInstance methodInstance = newMethod.GetMethodInstances()["MethodInstance"]; // Name specified in application definition file  
  
/***Step 2: Get the list of input parameters.***/  
  
            Object[] args = methodInstance.GetMethod().CreateDefaultParameterInstances(methodInstance); //Get the default values of the input parameters.  
            Object[] ArgsInput = new Object[args.Length];  
  
/***Step 3: Assign them required values.***/  
  
            Type t = null;  
            char[] myString = BankCountry.ToCharArray();  
            String s = new String(myString);  
            t = s.GetType();  
            ArgsInput[0] = Activator.CreateInstance(t, myString);  
  
            myString = BankKey.ToCharArray();  
            s = new String(myString);  
            t = s.GetType();  
            ArgsInput[1] = Activator.CreateInstance(t, myString);  
  
/***Step 4: Execute the particular method instance using the required value.***/  
  
            IEntityInstance IE = (IEntityInstance)CategoryEntity.Execute(methodInstance, newSystemInstance, ref ArgsInput); //Method instance of type Specific Finder is being used here.  
  
/***Step 5: Display the output on the custom Web Part in Microsoft Office SharePoint Server.***/  
  
            writer.Write("<table>");  
            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>");  
        }  
    }  
  

Hinweis

Die Anwendungsdefinitionsdatei muss die spezifische Finder-Methode instance enthalten. Eine spezifische Finder-Methode sucht einen bestimmten Datensatz basierend auf einem Bezeichner. Informationen zum Erstellen einer bestimmten Finder-Methode instance finden Sie unter "Anforderung 2: Abrufen von Details für einen bestimmten Kunden aus der Kundenliste" in Schritt 2: Erstellen einer Anwendungsdefinitionsdatei für die Oracle E-Business Suite-Artefakte in Tutorial: Präsentieren von Daten aus Oracle E-Business Suite auf einer SharePoint-Website.

Problem 2: Werte für Arrayelemente können nicht angegeben werden

Erklärung: Wenn der Eingabeparameter des WCF-Diensts ein Array ist, können Sie keine Werte für die Arrayelemente mithilfe von Filtern angeben, die in der Anwendungsdefinitionsdatei definiert sind, die mit dem Business Data Catalog Definition Editor erstellt wurde. Dies impliziert, dass Sie das Geschäftsdatenlisten- oder Geschäftsdatenelement-Webpart in Microsoft Office SharePoint Server nicht verwenden können, um Werte für diese Eingabeparameter (Arrayelemente) für den WCF-Dienst anzugeben. Dies liegt daran, wie Arrays in der Anwendungsdefinitionsdatei definiert werden.

Lösung: Verwenden Sie ein benutzerdefiniertes Webpart, um Arrayelementen Werte zuzuweisen. Informationen zur Verwendung eines benutzerdefinierten Webparts finden Sie unter Verwenden eines benutzerdefinierten Webparts mit Oracle E-Business Suite. Beispielsweise können Sie das folgende Codebeispiel in Schritt 3 in "Problem 1: Einschränkung beim Anzeigen eines einzelnen Datensatzes in Microsoft Office SharePoint Server basierend auf mehreren Werten" verwenden, um Arrayelementen Werte zuzuweisen.

/***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 string type.***/  
  
            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  
  

Problem 3: Einschränkung beim Angeben von NULL-Werten für komplexe Typparameter

Erklärung: Wenn Sie keinen Wert für einen komplexen Typparameter aus einem Webpart in Microsoft Office SharePoint Server angeben, sollte NULL als Wert für den komplexen Typparameter an den WCF-Dienst übergeben werden. Für den Parameter des komplexen Typs wird jedoch ein Wert ungleich NULL übergeben, und NULL wird für die untergeordneten Elemente (vom einfachen Typ) übergeben. Dies führt zu einem Konflikt zwischen dem erwarteten Nachrichtenschema und dem Nachrichtenschema, das an den WCF-Dienst übergeben wird. Daher wird auf dem Oracle E-Business-Adapter möglicherweise eine Fehlermeldung angezeigt.

Hinweis

Um den Standardwert eines komplexen Typparameters zu ermitteln, wenn kein Wert von einem Webpart in Microsoft Office SharePoint Server übergeben wird, verwenden Sie Schritt 2 im Codebeispiel, das unter "Problem 1: Einschränkung beim Anzeigen eines einzelnen Datensatzes in Microsoft Office SharePoint Server basierend auf mehreren Werten" erwähnt wird.

Lösung: Verwenden Sie ein benutzerdefiniertes Webpart, um dem komplexen Typparameter einen NULL-Wert zuzuweisen. Informationen zur Verwendung eines benutzerdefinierten Webparts finden Sie unter Verwenden eines benutzerdefinierten Webparts mit Oracle E-Business Suite.

Weitere Informationen

Verwenden des Oracle E-Business Suite-Adapters mit SharePoint