SharePoint での Oracle-Business Suite アダプターの使用に関する考慮事項
このトピックでは、Microsoft BizTalk Adapter for Oracle E-Business Suite と Microsoft Office SharePoint Server の使用時に発生する可能性がある問題と解決策について説明します。 問題は 2 つのカテゴリに分けられます。
一般的な問題
カスタム Web パーツに関連する問題
一般的な問題
このセクションには、解決策のない問題が含まれています。
問題 1: WCF サービスによって返される単純型データが表示されない
説明: Microsoft Office SharePoint Server は、WCF サービスによって返されるデータが DataSet 型または Collection 型のみであると想定しています。 WCF サービスによって返されるデータが単純型の場合、Microsoft Office SharePoint Server ではデータは表示されません。
解決策: 解像度なし。 これは、Microsoft Office SharePoint Server の既知の制限事項です。
問題 2: WCF サービスによって返されるデータが NULL の場合、エラー メッセージが表示される
説明: WCF サービスによって返されるデータが NULL 値の場合、Microsoft Office SharePoint Server にエラー メッセージが表示されます。 たとえば、 Finder メソッド インスタンスにビジネス データ リスト Web パーツを使用していて、検索式に基づいて Oracle E-Business Suite で顧客を検索するとします。 指定した検索式によって NULL 値がフェッチされます。 この場合、Microsoft Office SharePoint Server にエラー メッセージが表示されます。
解決策: 解像度なし。 これは、Microsoft Office SharePoint Server の既知の制限事項です。
問題 3: WCF サービスによって返される単純型の配列が表示されない
説明: WCF サービスによって返されるデータが単純型の配列である場合、Microsoft Office SharePoint Server ではデータは表示されません。 さらに、Business Data Catalog Definition Editor で単純型の配列を返すメソッド インスタンスを実行すると、次のエラー メッセージが表示されます。"バックエンド システム アダプターは、対応するメタデータ (MethodInstance、Parameter、または TypeDescriptor) と互換性のない構造体を返しました。
解決策: 解像度なし。 これは、Microsoft Office SharePoint Server および Business Data Catalog 定義エディターに関する既知の制限事項です。
問題 4: フィールドが 300 を超える複合型パラメーターを含むアプリケーション定義ファイルをインポートできない
説明: Microsoft Office SharePoint Server は、WCF サービスによって返される複合型パラメーターに 300 を超えるフィールドを含むアプリケーション定義ファイルをインポートできず、これを行おうとするとエラー メッセージが表示されます。 これは、複合型パラメーターの 300 を超えるフィールドを表示できないという Microsoft Office SharePoint Server の制限によるものです。
解決方法: ビジネス Data Catalog定義エディターを使用して、複合型パラメーターのフィールド数を 300 以下に制限します。 要件に応じて、Microsoft Office SharePoint Server に表示する必要のないビジネス Data Catalog定義エディターで複合型パラメーターのフィールドを削除できます。 または、すべてのフィールドを含むビジネス Data Catalog定義エディターからアプリケーション定義ファイルをエクスポートし、メモ帳または XML オーサリング アプリケーションでアプリケーション定義ファイルを変更して、フィールドの数を 300 に制限するために不要なフィールドを削除することもできます。
カスタム Web パーツに関連する問題
このセクションでは、解決のためにカスタム Web パーツを使用する必要がある問題について説明します。 カスタム Web パーツを使用して、Oracle E-Business アダプターと Microsoft Office SharePoint Server の使用中に発生する可能性のある問題を解決する方法の詳細については、「 How to use a custom web part with Oracle E-Business Suite」を参照してください。
問題 1: 複数の値に基づいて Microsoft Office SharePoint Server に 1 つのレコードを表示する場合の制限事項
説明: Microsoft Office SharePoint Server で、Oracle E-Business Suite の複数の値 (入力パラメーター) に基づいて 1 つのレコードを表示する場合は、「チュートリアル: Oracle E-Business Suite からデータを取得する SharePoint アプリケーションを作成する」で指定した 3 つの Web パーツ (ビジネス データ リスト、ビジネス データ アイテム、およびビジネス データ関連リスト) を使用することはできません。 SharePoint サイトで Oracle E-Business Suite のデータを表示します。
解決方法: これを行うには、カスタム Web パーツを使用する必要があります。 カスタム Web パーツの使用方法については、「 Oracle E-Business Suite でカスタム Web パーツを使用する方法」を参照してください。 そのトピックの「手順 1: カスタム Web パーツを作成する」では、手順 5 で次のコード サンプルを使用できます。 次のコード サンプルでは、BankCountry と BankKey を入力パラメーターとして受け取り、Microsoft Office SharePoint Server で 1 つのレコードとして表示します。
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>");
}
}
Note
アプリケーション定義ファイルには Specific Finder メソッド インスタンスが含まれている必要があります。 Specific Finder メソッドは、識別子に基づいて特定のレコードを検索します。 Specific Finder メソッド インスタンスの作成の詳細については、「チュートリアル: SharePoint サイトで Oracle E-Business Suite からデータを提示する」の「手順 2: Oracle E-Business Suite 成果物のアプリケーション定義ファイルを作成する」の「要件 2: 顧客のリストから特定の顧客の詳細を取得する」を参照してください。
問題 2: 配列要素に値を指定できない
説明: WCF サービスの入力パラメーターが配列の場合、Business Data Catalog 定義エディターを使用して作成されたアプリケーション定義ファイルで定義されているフィルターを使用して配列要素に値を指定することはできません。 これは、Microsoft Office SharePoint Server のビジネス データ リストまたはビジネス データ アイテム Web パーツを使用して、WCF サービスに対するこれらの入力パラメーター (配列の要素) の値を指定できないことを意味します。 これは、アプリケーション定義ファイルで配列を定義する方法が原因です。
解決方法: カスタム Web パーツを使用して、配列要素に値を割り当てます。 カスタム Web パーツの使用方法については、「 Oracle E-Business Suite でカスタム Web パーツを使用する方法」を参照してください。 たとえば、「問題 1: 複数の値に基づいて Microsoft Office SharePoint Server に 1 つのレコードを表示する場合の制限事項」の手順 3 の次のコード サンプルを使用して、配列要素に値を割り当てることができます。
/***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
問題 3: 複合型パラメーターに NULL 値を指定する場合の制限事項
説明: Microsoft Office SharePoint Server の Web パーツから複合型パラメーターの値を指定しない場合は、複合型パラメーターの値として NULL を WCF サービスに渡す必要があります。 ただし、複合型パラメーターには NULL 以外の値が渡され、その子要素 (単純型) には NULL が渡されます。 これにより、予期されるメッセージ スキーマと WCF サービスに渡されるメッセージ スキーマの間で不一致が発生します。 その結果、Oracle E-Business アダプターにエラー メッセージが表示される場合があります。
Note
Microsoft Office SharePoint Server の Web パーツから値が渡されない場合に複合型パラメーターの既定値を確認するには、「問題 1: 複数の値に基づいて Microsoft Office SharePoint Server に 1 つのレコードを表示する場合の制限事項」で説明されているコード サンプルの手順 2 を使用します。
解決方法: カスタム Web パーツを使用して、複合型パラメーターに NULL 値を割り当てます。 カスタム Web パーツの使用方法については、「 Oracle E-Business Suite でカスタム Web パーツを使用する方法」を参照してください。