我試圖構建,而無需把某些字段到報告數據庫中創建Encompass360自定義報告的獨立應用程序報告數據庫之外的現場數據。 到目前爲止,我只找到一種方法來做到這一點,但它非常緩慢。 (遠遠高於涵蓋內的正常報告較慢報告數據庫之外的檢索數據時),這需要近2分鐘,提取數據,5個貸這樣做:獲取使用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報告數據庫,這不需要比它應該檢索數據更長的時間。
注:我知道我可以添加字段不在它當前報告數據庫中,所以這不是我要找的答案。
注2:Encompass360沒有它自己的標籤,如果有人能爲手頭的主題添加標籤更好的瞭解,請添加它們。
這將是很難診斷的問題沒有任何經驗與這個特定的SDK工作。有可用的配置文件,如Jetbrains dotTrace和Redgate ANTS可以找到瓶頸。鑑於我以前在這樣的系統上工作的經驗,我最好的猜測是SDK正在加載很多可能不需要的字段,因爲貸款可能有數百個字段。 – Romoku
我相信您的評估對於給定貸款加載可能的所有字段是正確的,但我不確定只有一個字段不在報表數據庫中時纔可以打開。我相信,Encompass應用程序本身所做的是打開每個貸款來檢索數據,如果它不在報告數據庫中。但它比我的獨立應用程序快得多,即使它仍然「很慢」。無論如何,感謝可以用來定位瓶頸的工具@Romoku – brw59