0

MSDN ガイドラインDynamics GP Extension Assemblyに従って、仕様に合わせて動的 GP 拡張メソッドを作成しました。

カスタム拡張アセンブリのコードは次のとおりです。

namespace MyGPService
{
  public static class GPExtensions
  {
    public static void OnRecordCreated(object sender, BusinessObjectEventArgs e)
    {
      try
      {      
        Customer customer;
        Extension CustomerEmailExtension = new Extension();
        //get current cust connection
        //connection = Connection.GetInstance();
        if (e.BusinessObject.GetType() == typeof(Customer))
        {
          customer = (Customer)e.BusinessObject;
          // Look at the Extension list passed along
          foreach (Extension ext in customer.Extensions)
          {
            Logger.LogExtention(ext);
          }
        }
        else
        {
          Logger.LogExtentionType(e.GetType().ToString());
        }
      }
      catch (Exception ex)
      {
        Logger.LogException(ex.Message);
      }
    }
  }
}

このコードには、着信データをローカル ドライブに記録するログ メカニズムがいくつか含まれています (テスト中に何が通過するかをさらに理解できるようにするため)。

以下は、BusinessObjectsFile.config ファイルのエントリです (ビジネス オブジェクト構成ファイルについて詳しく説明します)。

<DictionaryEntry>
 <Key xsi:type="xsd:string">Microsoft.Dynamics.GP.Customer</Key>
    <Value xsi:type="BusinessObjectConfiguration">
            <Event>
                <EventName>Created</EventName>
                <EventHandlerType>
                    <Type>Microsoft.Dynamics.Common.BusinessObjectEventHandler</Type>
                    <Assembly>Microsoft.Dynamics.Common</Assembly>
                </EventHandlerType>
                    EventHandler>
                        <SoftwareVendor>XYZ</SoftwareVendor>
                        <Type>MyGPService.GPExtentions</Type>
                        <StaticMethod>OnRecordCreated</StaticMethod>
                        <Assembly>MyGPExtensionMethods</Assembly>
                        <Execute>true</Execute>
                    </EventHandler>
            </Event>
    </Value>
</DictionaryEntry>

適切な変更を構成した後 (新しい拡張アセンブリを C:\Program Files\Microsoft Dynamics\GPWebServices に配置し、BusinessObjectFile.config を構成し、Microsoft Dynamics GP Service Hostを再起動しました。次に、新しい顧客を作成し、PO を作成し、その顧客のSOで、何も記録されていませんか???

ロギング方法:

public static void LogException(string error)
{
  try
  {
    string path = Path.Combine(Utilities.SystemDirectory, "GPExtentionMethod\\Errors\\ExtErrorLog.txt");
    if(!Directory.Exists(Path.GetDirectoryName(path)))
      Directory.CreateDirectory(Path.GetDirectoryName(path));
    if (!File.Exists(path))
    {
      // Create a file to write to. 
      using (StreamWriter sw = File.CreateText(path))
      {
        sw.WriteLine("GP Extention Error Log");
        sw.WriteLine("");
      }
    }
    using (StreamWriter sw = File.AppendText(path))
    {
      sw.WriteLine(Environment.NewLine);
      sw.WriteLine("Error");
      sw.WriteLine(DateTime.Now.ToString() + ": " + error);
    }
  }
  catch { }
}

展開まですべてを追跡しましたが、この拡張メソッドが GP から呼び出されない理由がわかりませんか? このパズルの一部が欠けていますか (Microsoft と言うべきか)?

4

1 に答える 1