Sample Integration
A sample web integration is bundled with Appraise-It Pro.
The sample web page is generated on first run and is located at Documents/My Appraise-It/Data/Web Development.
The sample web page can be modified; changes will be reflected after closing and reopening the integration web browser from the Development tab.
If needed, you can revert the sample web page by deleting Documents/My Appraise-It/Data/Web Development and Documents/My Appraise-It/Data/DataFolder.xml, then restarting Appraise-It Pro.
For quick reference, a condensed version of the sample web page is presented below.
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- IntegrationSampleJavascriptObject
getOrderInformationFromAppraiseItPro - returns (string, string) containing a unique order/report id and the exsiting report data in RPTI XML.
getIsDynamicReport - returns boolean indicating whether or not the open report is a dynamic (UAD 3.6) report.
sendRptiDownloadUrlToAppraiseItPro - sends the url to download the full RPTI package back to Appraise-It Pro.
sendMismo36DownloadUrlToAppraiseItPro - sends the url to download the full RPTI package back to Appraise-It Pro.
sendRptiXmlToAppraiseItPro - sends the RPTI XML back to Appraise-It Pro (no images or PDFs).-->
<head>
<title>Webbrowser Integration Demo</title>
<script>
// Initialize CefSharp and connect to IntegrationSampleJavascriptObject.
async function InitializeCefSharp() {
await CefSharp.BindObjectAsync("IntegrationSampleJavascriptObject");
}
async function sendMismo36DownloadUrlToAppraiseItPro() {
isDynamicReport = await IntegrationSampleJavascriptObject.getIsDynamicReport();
if (isDynamicReport) {
// Dynamic Report
result = 'https://downloads.sfrep.com/resources/UAD_3.6_SF1.zip';
}
else {
// Static Report
alert("MISMO 2.6 import is not supported by the browser integration");
}
await IntegrationSampleJavascriptObject.sendMismo36DownloadUrlToAppraiseItPro(result);
}
async function sendRptiDownloadUrlToAppraiseItPro() {
isDynamicReport = await IntegrationSampleJavascriptObject.getIsDynamicReport();
if (isDynamicReport) {
// Dynamic Report
result = 'https://api.dev.sfrep.com/resources/DynamicSF1Sample.rpti'
}
else {
// Static Report
result = 'https://api.dev.sfrep.com/resources/StaticSample.rpti'
}
await IntegrationSampleJavascriptObject.sendRptiDownloadUrlToAppraiseItPro(result);
}
async function sendRptiXmlToAppraiseItPro() {
isDynamicReport = await IntegrationSampleJavascriptObject.getIsDynamicReport();
if (isDynamicReport) {
// Dynamic Report
result = '<?xml version="1.0" encoding="utf-16"?><Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Application VendorName="SFREP" ProductName="Appraise-It" ProductVersion="3.5.5" AixmlVersion="1.5"/><Geocoding/><Forms><DynamicForm Id="FNMA-URAR-0924"/><DynamicForm Id="AutomaticAdjustments-UAD2"/><DynamicForm Id="RatingDefinitions-UAD2"/></Forms><DynamicFields>...</DynamicFields></Report>'
}
else {
// Static Report
result = '<?xml version="1.0" encoding="utf-16"?><Report xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Application VendorName="SFREP" ProductName="Appraise-It" ProductVersion="2.1.0" AixmlVersion="1.5" /><Geocoding>...</Geocoding><Forms>...</Forms></Report>';
}
await IntegrationSampleJavascriptObject.sendRptiXmlToAppraiseItPro(result);
}
async function getOrderInformationFromAppraiseItPro() {
order = await IntegrationSampleJavascriptObject.getOrderInformationFromAppraiseItPro();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(order.Item2, "text/xml");
isDynamicReport = await IntegrationSampleJavascriptObject.getIsDynamicReport();
if (isDynamicReport) {
streetAddress = xmlDoc.evaluate("//Report/DynamicFields/ReportFields/RowGroups/RowGroup/Fields/DynamicTextField[@Id='StreetAddress']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
city = xmlDoc.evaluate("//Report/DynamicFields/ReportFields/RowGroups/RowGroup/Fields/DynamicTextField[@Id='City']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
state = xmlDoc.evaluate("//Report/DynamicFields/ReportFields/RowGroups/RowGroup/Fields/DynamicTextField[@Id='State']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
zip = xmlDoc.evaluate("//Report/DynamicFields/ReportFields/RowGroups/RowGroup/Fields/DynamicTextField[@Id='ZipCode']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
message = "Order Id: " + order.Item1 + "\nAddress :\n" + streetAddress + ", " + city + ", " + state + " " + zip;
alert(message);
}
else {
streetAddress = xmlDoc.evaluate("//Report/Forms/Form/Fields/TextField[@Id='StreetAddress']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
city = xmlDoc.evaluate("//Report/Forms/Form/Fields/TextField[@Id='City']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
state = xmlDoc.evaluate("//Report/Forms/Form/Fields/TextField[@Id='State']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
zip = xmlDoc.evaluate("//Report/Forms/Form/Fields/TextField[@Id='ZipCode']/@Data", xmlDoc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.value;
message = "Order Id: " + order.Item1 + "\nAddress :\n" + streetAddress + ", " + city + ", " + state + " " + zip;
alert(message);
}
}
InitializeCefSharp();
</script>
</head>
<body>
<p>
This page has been loaded from the user's Appraise-It Pro Data folder.
Any modifications to this file will reflected upon re-launching the sample browser.
<br />
<br />
The target page of this browser can be changed by adding or modifying the following value in Window's registry.
HKEY_CURRENT_USER\Software\SFREP\Appraise-It Pro\Development\BrowserIntegrationUrl
<br />
<br />
Get information from Appraise-It Pro and display the order id and subject address. The DevTools console can be used to view additional report data in the order variable.
<br />
<button onclick="getOrderInformationFromAppraiseItPro()">Get Order Information</button>
<br />
<br />
Download a MISMO 3.6 (UAD subchema) zip package file from the provided link and import it into Appraise-It Pro.
<br />
<button onclick="sendMismo36DownloadUrlToAppraiseItPro()">Download MISMO (UAD) 3.6</button>
<br />
<br />
Download a sample RPTI zip file and import it into Appraise-It Pro.
<br />
<button onclick="sendRptiDownloadUrlToAppraiseItPro()">Download RPTI</button>
<br /> <br />
Import sample RPTI text data into Appraise-It Pro using XML.
<br />
<button onclick="sendRptiXmlToAppraiseItPro()">Import RPTI XML</button>
<br />
<br />
Documentation for the the RPTI specification can be found here: <a href="https://api.sfrep.com/rpti/aixml_spec.html">https://api.sfrep.com/rpti/aixml_spec.html</a>
</p>
<br />
</body>
</html>