レポートデータベースに特定のフィールドを入れることなく、Encompass360のカスタムレポートを作成するスタンドアロンアプリケーションを作成しようとしています。 これまで私はそれを行う方法を見つけただけですが、それは非常に遅いです。 (レポートデータベースの外部でデータを取得包含する内の通常のレポートよりもはるかに遅い。)それは、これを行う5つのローンのデータを引っ張って、ほぼ2分かかります:Encompass360 SDKを使用してレポートデータベースの外にフィールドデータを取得
int count = 5;
StringList fields = new StringList();
fields.Add("Fields.317");
fields.Add("Fields.3238");
fields.Add("Fields.313");
fields.Add("Fields.319");
fields.Add("Fields.2");
// lstLoans.Items contains the string location of the loans(i.e. "My Pipeline\Dave#6")
foreach (LoanIdentity loanID in lstLoans.Items)
{
string[] loanIdentifier = loanID.ToString().Split('\\');
Loan loan = Globals.Session.Loans.Folders[loanIdentifier[0]].OpenLoan(loanIdentifier[1]);
bool fundingPlus = true; // if milestone == funding || shipping || suspended || completion;
if (!fundingPlus)
continue;
bool oneIsChecked = false;
LogMilestoneEvents msEvents = loan.Log.MilestoneEvents;
DateTime date;
MilestoneEvent ms = null; // better way to do this probably
if (checkBox4.Checked)
{
ms = msEvents.GetEventForMilestone("Completion");
if (ms.Completed)
{
oneIsChecked = true;
}
}
else if (checkBox3.Checked)
{
ms = msEvents.GetEventForMilestone("Suspended");
if (ms.Completed)
{
oneIsChecked = true;
}
}
else if (checkBox2.Checked)
{
ms = msEvents.GetEventForMilestone("Shipping");
if (ms.Completed)
{
oneIsChecked = true;
}
}
else if (checkBox1.Checked)
{
ms = msEvents.GetEventForMilestone("Funding");
if (ms.Completed)
{
oneIsChecked = true;
}
}
if (!oneIsChecked)
continue;
string LO = loan.Fields["317"].FormattedValue;
string LOid = loan.Fields["3238"].FormattedValue;
string city = loan.Fields["313"].FormattedValue;
string address = loan.Fields["319"].FormattedValue;
string loanAmount = loan.Fields["2"].FormattedValue;
if (loanAmount == "")
{
Console.WriteLine(LO);
continue;
}
int numLoans = 1;
addLoanFieldToListView(LO, numLoans, city, address, loanAmount);
if (--count == 0)
break;
}
}
私が把握することができていませんレポートデータベースの外でデータを取得するパイプラインメソッドの使用方法は、私が探しているフィールドのすべてがレポートデータベースにある場合、これらのツールを使用して何百ものローンの内容を取得するのに数秒かかることはほとんどありません。
session.Reports.SelectReportingFieldsForLoans(loanGUIDs, fields);
session.Loans.QueryPipeline(selectedDate, PipelineSortOrder.None);
session.Loans.OpenPipeline(PipelineSortOrder.None);
誰かが単純な例を提供して、データを取得するために必要な時間よりも長くかかることのないsdkを使用して、データベースをレポートします。
注:現時点ではないレポートデータベースにフィールドを追加できることはわかっているので、これは私が探している回答ではありません。
Note#2:Encompass360には独自のタグがありません。もし誰かが手持ちの被写体に追加できる優れたタグを知っていれば追加してください。
この特定のSDKを使用している経験がなくても、問題を診断するのは難しいでしょう。ボトルネックを見つけることができるJetbrains dotTraceやRedgate ANTSなどのプロファイラがあります。このようなシステムでの私の以前の経験から、私の推測によると、SDKは、ローンに何百ものものがあるので、必要ではないかもしれない多くのフィールドをロードしています。 – Romoku
私はあなたの評価が、おそらくすべてのローンのフィールドの読み込みについて正しいと考えていますが、レポートデータベースにないときには1つのフィールドだけを開くことはできません。 Encompassアプリケーション自体が行うことは、レポートデータベースにない場合にデータを取得するための個々のローンを開くことです。しかし、それは私のスタンドアロンのアプリケーションよりはるかに高速ですが、それでもまだ「遅い」です。それにもかかわらず、ボトルネックの位置を特定するためのツールに感謝@ROMoku – brw59