QPR Reporting Add-on
Introduction to QPR Reporting Add-on
QPR Reporting Add-on containing the following parts:
Installation
Follow these steps to install QPR Reporting Add-on. Installation package is available here: https://community.qpr.com/system/files/resource/QPR%20Reporting%20Add-on%202017.1.0%20Hotfix%20404017.zip (only accessible for registered QPR customers).
All components except QPR Reports Menu are .Net web services hosted in IIS, and they interact with QPR Suite using QPR Web Service interface. All parts also contain the common expression language. In addition to the general installation instruction described by this document, the individual parts contain additional settings which are described in their own documentation.
Note that there are different folder paths for each QPR Suite version. These instructions use X in the folder names, that should be replaced by the number of the corresponding QPR Suite version.
1. Check whether the QPR environment uses Windows authentication (IWA) and/or HTTPS connection. Windows authentication is used when QPR system is connected to LDAP/AD and Windows user accounts are used to login to QPR. HTTPS connection is in use when QPR Portal url starts with “https”.
2. Open Programs and Features (in Windows Control Panel) and click Turn Windows features on or off. Check that components listed in the following table are installed. The installation procedure depends on Windows version. QPR Reporting Add-on needs .Net Framework 4.6.1 or later version.
Windows Version | Required Components |
---|---|
Windows 10
(already includes .NET Framework 4.6) |
|
Windows 8
(already includes .NET Framework 4.5.1) |
|
Windows Server 2012 R2
(already includes .NET Framework 4.5.1) |
|
Windows Server 2012
(needed .Net Framework is not installed by default) |
|
Windows Server 2008 R2 (needed .Net Framework is not installed by default) |
|
3. Check that QPR Web Services web.config file is a proper one (located in C:\Program Files\QPR Software Plc\QPR 201X.1 Servers\WebServices). In the default QPR installation there are files web.config and web.config.IWA. If QPR environment uses Windows authentication (refer to step 1), the latter file must be taken into use by renaming
a. web.config to web.config.noIWA, and
b. web.config.IWA to web.config.
4. If using Windows authentication (refer to step 1), make sure C:\ProgramData\QPR Software\QPR 201X\201X.1\Servers\Settings\QPR_Servers.ini has settings IWACGIBinaryHost=127.0.0.1 and CGIBinaryHost=127.0.0.1. under WAS Settings section.
5. Copy QPRWebServicesExtensions folder from installation package to IIS published files in C:\inetpub\wwwroot\.
6. Installation package contains the following preconfigured files to be used as QPR Reporting Add-on web.config file:
- a) web.config: for HTTP connection and Anonymous authentication
- b) IWA.web.config: for HTTP connection and Windows authentication
- c) HTTPS.web.config: for HTTPS connection and Anonymous authentication
- d) HTTPS+IWA.web.config: for HTTPS connection and Windows authentication
Copy a suitable configuration file to C:\inetpub\wwwroot\QPRWebServicesExtensions\ folder and rename it as web.config.
Do not mix up QPR Reporting Add-on's web.config file (in C:\inetpub\wwwroot\QPRWebServicesExtensions\) with QPR Web Services' web.config file (in C:\Program Files\QPR Software Plc\QPR 201X.1 Servers\WebServices\web.config).
7. Set the parameters (listed in Settings) in the QPR Reporting Add-on web.config's appSettings section (in C:\inetpub\wwwroot\QPRWebServicesExtensions\web.config).
8. Make a backup copy of the C:\Program Files\QPR Software Plc\QPR 201X.1 Servers\WebServices\servicetester.aspx file. Replace the file with the servicetester.aspx. file from the installation package. (Alternatively, use the servicetester.patch file that described the changes to the servicetester.aspx file.)
9. Make sure QPR Web Services Server is running. The installation cannot be continued until QPR Web Services Server is running properly.
10. In IIS Management Console, go to Application Pools (in left side hierarchy). Create a new application pool by clicking Add Application Pool…. Use the settings in the image below (settings v.4.0.x and Integrated). Please do not change settings for existing application pools, if they are used by other web applications because then the other applications may stop working. Especially QPR Suite has an application pool that is v.2.0.x and Integrated.
11. Click the previously created application pool, click Advanced settings… and select Identity setting. In the opening Application Pool Identity window, click Built-in account and select LocalSystem (see the image below). Click OK for the both open windows.
12. Find the QPRWebServicesExtensions folder in IIS Management Console and click Convert to Application (secondary mouse button). Select the previously created application pool QPR Web Services Extensions.
13. Check the IIS authentication settings by clicking QPRWebServicesExtensions web application is IIS Management Console (on the left side hierarchy). Check that Features View is opened (in bottom), and doubleclick Authentication. The authentication settings must match with the web.config file, which was set in step 3:
a. For Windows authentication: Anonymous Authentication must be Disabled and Windows Authentication must be Enabled. (see the image below)
b. For Anonymous authentication: Anonymous Authentication must be Enabled and Windows Authentication must be Disabled.
ASP.NET Impersonation must be Enabled in both cases.
14. Configure QPR Reporting Add-on settings listed in Settings. Especially check the qprwebserviceaddress carefully. Quick guide for usual configurations (file C:\inetpub\wwwroot\QPRWebServicesExtensions\web.config):
- a. When Windows authentication is not in use: wcfsecuritymode=none and qprauthenticationmode=passedsession
- b. When Windows authentication is in use: wcfsecuritymode=message and qprauthenticationmode=windows
15. Create folder C:\temp. It is possible to use other folder but its location must be changed to web.config temppath setting.
16. Check that QPR Reporting Add-on is working by making the tests listed in chapter Installation tests. If you encounter any issues, check if any of the error situations described in Troubleshooting were encountered.
17. Copy DWV templates folder from installation package as a DWV templates root folder (setting dwvtemplatesphysicalpath in QPR Reporting Add-on’ web.config file). Also copy Word report templates folder as the templates root folder (setting dwrtemplatesphysicalpath in QPR Reporting Add-on’ web.config file) and trend_down.png and trend_up.png files from DWV templates\Dashboard folder to C:\inetpub\wwwroot\qpr201X-1\qprsoftware\portal\images.
18. Deploy Reports Menu UI element to the Portal by replacing mainview.tpl and headerview.tpl files from the installation package Reports Menu folder to C:\ProgramData\QPR Software\QPR 201X\201X.1\Servers\Templates\WAS\Portal. (Alternatively, use the externalreportsmenu.patch file.)
19. Copy icon_reports.png from Reports Menu folder to C:\inetpub\wwwroot\qpr201X-1\qprsoftware\portal\images.
20. Copy jquery.filedownload.js from Reports Menu folder to C:\inetpub\wwwroot\qpr201X-1\qprsoftware\Common\scripts.
21. Add the following CSS to C:\inetpub\wwwroot\qpr201X-1\qprsoftware\stylesheets\custom.css:
#ReportsToolbarMenu { cursor: pointer; } #ReportsToolbarMenu .activetarget { background-color: inherit; } .visiblereportmenulink, .reportmenumain > a { background: url(../portal/images/icon_reports.png) no-repeat left -1px; } .disabledreportmenulink { background: url(../portal/images/icon_reports.png) no-repeat left -1px; color: #BBBBBB !important; cursor: default; } #InformationViewFrame { background-color: white; }
22. Restart Windows service for QPR Suite, or clear QPR Portal templates cache (http://SERVERNAME/QPR201X-1/Portal/QPR.Isapi.dll?QPRWAS&*cleartemplatecache). In addition, clear web browser’s cache.
Web.config File Settings
QPR Reporting Add-on is configured using the C:\inetpub\wwwroot\QPRWebServicesExtensions\web.config file. The file has following settings in the configuration > appSettings section.
Attribute | Description |
---|---|
qprwebserviceaddress | QPR Web Service url address. This should point directly to QPR Web Service server’s port. The default port is 9002, but the actual port in use can be seen in QPR Configuration Manager (Common > Server locations > Web services server). Example: http://localhost:9002/QPR201X-1/Portal/QPR.Isapi.dll/wsforward/mainservice.svc/wshttp
Notes:
|
qprauthenticationmode | Determines how the Add-on authenticates to QPR Web Service. Options:
|
wcfsecuritymode | QPR Web Services security settings. Must correspond to QPR Web Service settings (in C:\Program Files\QPR Software Plc\QPR 201X.1 Servers\WebServices\web.config) (refer to step 3 in the installation instructions). Options:
|
dprtemplatesphysicalpath | Folder in the file system where QPR PowerPoint Reports template files are located. (QPR PowerPoint Reports hasn't been released yet.) |
dwrtemplatesphysicalpath | Folder in the file system where QPR Word Reports template files are located. |
dwvtemplatesphysicalpath | Folder in the file system where QPR Web Views template files are located. |
installpath | Path for QPR Web Services Extensions binaries installation folder, which is by default C:\inetpub\wwwroot\QPRWebServicesExtensions. This information is needed by Expression language WebpageAsImage function. |
temppath | Path to a file where Reporting Add-on may write temporary files. |
templatecaching | Determines whether template files caching is enabled (true) or disabled (false). Template caching means that templates are read from file system to server memory when the IIS web application starts. When template caching is enabled, pages are processed faster and disk load as reduces. Template caching should be enabled for production environments. Template caching is usually be disabled for development work, so that changes in templates can be seen immediately in result pages. When template caching is disabled, all templates are read into memory every time, when a page is requested. |
disallowedfunctions | Comma separated list of functions that are not allowed to be executed by the Reporting Add-On. There are some functions which are able to manipulate files in the server computer, and enabling those files may cause security issues. Function names must be written in lowercase. |
loglevel | Possible values: None, Error, Information and Verbose. |
qprwebapplicationname | Setting for Dynamic Web Views: Name of the QPR web application in IIS. This parameter is not mandatory, but it should be defined, as it can be used by html content to reference QPR resources published in IIS (such as images and css files). |
reporttemplateparameter | Setting for Word reports: Defines the name of the parameter which passes the report template path. See chapter Working with Report Templates. |
qprtemplateidparameter | Setting for Word reports: Parameter name which passes QPR’s Word report template object id. This can be used when the report templates are stored in QPR Portal (i.e. QPR system objects) (see chapter Working with Report Templates) |
defaultimageformat | Setting for Word reports: Default image format for QPR Web Service’s GetGraph operation. This setting is used if image format is not explicitly defined. |
username | Password for QPR Suite when authenticationmode is fixedcredentials. |
password | Password for QPR Suite when authenticationmode is fixedcredentials. |
executionTimeout (in the httpRuntime tag) | Timeout for request processing in seconds. Usually there is no need to change this setting. The value should be increased if there are heavy requests which take time to run. Note that the timeout limit works as a protection when the processing never ends as a results of an error (this may be possible in e.g. recursive reports). |
Installation Test
Do the following tests to confirm that QPR Reporting Add-on is working:
- Open http://SERVERNAME/QPRWebServicesExtensions/ExpressionEngine.svc. The address starts with https instead of http, when also QPR Portal address starts with https. There should open a page stating You have created a service. If an internal server error (error code 500) with no error details is returned, test the url in the server, because in the server the error message has more details.
- If this works, the .Net application is running properly in IIS.
- If this doesn’t work, there is a problem with IIS settings or .Net installation.
- Open QPR Web Services Tester, which is usually in http://SERVERNAME/QPR201X-1/Portal/QPR.Isapi.dll/wsforward/servicetester.aspx. The SERVERNAME can be found in QPR Portal url address. The address starts with https instead of http, when also QPR Portal address starts with https.
- Set valid credentials in the Authentication tab. Confirm that QPR Web Services is working by making a query using QPR Web Services Tester in the QueryObjects tab.
- Check that the page contains RunExpression tab.
- Query for example [UM].users like in the image below. When clicking QueryObjectsAsXml, the test is successful, if a text starting with <ResultsetHierarchy … appears. Note that your query results may be different than the results in the image. If this test doesn’t work, there is a problem with QPR Web Services.
- 6. Go to RunExpression tab, click Run using the expression it contains by default. It should return Ok (below the Run button). This confirms that the .Net application is running in IIS and the QPR Web Services connection works.
Running Multiple QPR Reporting Add-ons
It may be needed to run multiple QPR Reporting Add-on instances in the same server machine, e.g. when different versions or different QPR Reporting Add-on settings are needed. Running multiple QPR Reporting Add-on instances simultaneously is possible: Copy the QPRWebServicesExtensions folder with a different name to IIS root folder, and make all the settings made to the default folder to that folder. The other instance is referenced using the other folder name in URLs.
Troubleshooting Installation Issues
Issue | Resolution |
---|---|
Web browser returns Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. | See the resolution here: https://support.microsoft.com/en-us/kb/2015129 |
Web browser returns: Memory gates checking failed because the free memory (nnn bytes) is less than x% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element. | The reason for this error is that there is little free memory in the system, and thus the primary solution is to get more free memory in the system. It’s still possible to set the free memory limit to a lower level, but this may cause instability. To do that, find the setting minFreeMemoryPercentageToActivateService from the QPR Web Services Extensions’ web.config and set the limit lower (e.g. to 2). More information:
https://msdn.microsoft.com/en-us/library/dn458357(v=vs.110).aspx |
Web Server returns Request URL Too Long and HTTP Error 414. The request URL is too long. | Open IIS Management Console, open QPR Web Services Extensions, click Request Filtering, click Edit Feature Settings... and increase Maximum URL length (Bytes) setting (e.g. add two or three zeroes at the end). |
Following errors are returned by Expression Engine tester: The message with Action 'http:// schemas.xmlsoap.org/ws/2005/02/trust/RST/ Issue' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding\security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None). Secure channel cannot be opened because security negotiation with the remote endpoint has failed. This may be due to absent or incorrectly specified EndpointIdentity in the EndpointAddress used to create the channel. Please verify the EndpointIdentity specified or implied by the EndpointAddress correctly identifies the remote endpoint. | The reason is the QPR Web Services and QPR Web Services Extensions WCF settings don’t match. Please check installation steps 3, 4 and 6. |
When running a report, the following error appears: Requested registry access is not allowed. The type initializer for 'MS.Utility.EventTrace' threw an exception. Error in opening document - the document is not valid Office Open XML format |
This is a user rights issue. Check that the Application Pool Identity is LocalSystem. |
When opening QPR Web Services Tester, the following message appears: ... Redirecting to mainservice page .... | There may be a problem with IIS handler mappings. Tests with following settings:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <directoryBrowse enabled="false" /> <httpErrors> <clear /> </httpErrors> <handlers accessPolicy="Read, Execute, Script"> <remove name="AssemblyResourceLoader-Integrated-4.0" /> <remove name="AssemblyResourceLoader-Integrated" /> <remove name="AXD-ISAPI-4.0_64bit" /> <remove name="AXD-ISAPI-4.0_32bit" /> <remove name="AXD-ISAPI-2.0" /> <remove name="AXD-ISAPI-2.0-64" /> <remove name="PageHandlerFactory-ISAPI-4.0_64bit" /> <remove name="PageHandlerFactory-Integrated-4.0" /> <remove name="PageHandlerFactory-ISAPI-4.0_32bit" /> <remove name="PageHandlerFactory-Integrated" /> <remove name="PageHandlerFactory-ISAPI-2.0" /> <remove name="PageHandlerFactory-ISAPI-2.0-64" /> <remove name="svc-ISAPI-4.0_64bit" /> <remove name="svc-ISAPI-4.0_32bit" /> <remove name="svc-Integrated-4.0" /> <remove name="svc-ISAPI-2.0-64" /> <remove name="svc-ISAPI-2.0" /> <remove name="svc-Integrated" /> </handlers> </system.webServer> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers accessPolicy="Read, Execute, Script" /> <directoryBrowse enabled="false" /> <defaultDocument> <files> <clear /> <add value="Default.htm" /> <add value="Default.asp" /> <add value="index.htm" /> <add value="index.html" /> <add value="iisstart.htm" /> <add value="default.aspx" /> <add value="QPR.Isapi.Dll" /> </files> </defaultDocument> </system.webServer> </configuration> |
Uninstallation
Follow these steps to uninstall QPR Reporting Add-on:
- In IIS Management Console click Remove for the QPRWebServicesExtensions web application (mouse secondary button).
- Delete the web application’s folder C:\inetpub\wwwroot\QPRWebServicesExtensions in the disk.
- Revert the original C:\Program Files\QPR Software Plc\QPR 201X.1 Servers\WebServices\servicetester.aspx from release package.
QPR Word Reports
QPR Web Views
QPR Reporting Expression Language
QPR Reports Menu
QPR Reports Menu is a dropdown menu for QPR Suite Portal to open reports and web pages that can be referenced using urls. The menu is able to add context related information automatically to the url as parameters, such as model, diagram and object id. Report items in the menu are configured in the file C:\DWV templates\ReportsMenu\ReportsMenuConfiguration.xml (the location may vary).
Reports Configuration
Report items in the menu are configured in the file C:\DWV templates\ReportsMenu\ReportsMenuConfiguration.xml (note that your location may be different). The configuration is an xml file having a root tag reportsmenu and subtags menuitem for individual report items. The menuitem tag has menu item settings as subtags which are described in the following table.
Settings can be defined using static string values or expressions. If the value is defined using an expression following attribute is added to the settings tag: expression="true". Note that the setting tags must be in the order that they are defined in the following table. Settings that are not mandatory, can be left out.
Parameter | Description |
---|---|
reportname (string) | Visible name of the report in the dropdown menu. |
reporturl (string) | Url to the report. Characters ? and & are automatically added to the end of the url if needed for appending url parameters. To build SSRS report urls, see http://msdn.microsoft.com/en-us/library/ms153586(v=sql.110).aspx. |
availabletabs (string) | List of QPR Portal tabs where the report is available. Available tab names can be found in http://kb.qpr.com/qpr2017-1/index.html?getportalurl.htm (see "Also Portal internal view names..."). The tabs need to be defined in lower case. If this parameter is empty, the report is visible in all tabs.
Following default tabs name are available: pgplugin_processmaps, pgplugin_navigator, pgplugin_actions, pgplugin_organizations, scplugin_scorecards, scplugin_strategymaps, scplugin_analysis, scplugin_navigator, scplugin_reports, scplugin_actions, discussion, byuser, bytime, actionanalysis |
passparameters (string) | List of parameters that are passed to the external report (see available parameters in chapter Portal Context Parameters). Passed parameters may be restricted, because e.g. SSRS gives an error when parameters are passed that are not defined in the report. |
order (integer) | An integer which determines order of reports in the menu. The reports are shown in the ascending order. If there are multiple reports with a same order number, the alphabetical order of the reportName parameter determines the ordering (secondary sorting). |
waitanimation (boolean) | Determines whether to use animation while waiting report loading. This only works in the Word reports. Options true and false.
The animation may only be used if the report access url has same DNS name and port than QPR Portal. This is because the disappearance of the animation is based on a cookie that is set by report providing server when the report is ready. When the cookie is received from the response of the report providing server, the loading animation is removed. If the loading animation doesn’t work correctly for any compatibility issue, disable it (set to false). |
visibility (string) | Determines the visibility status of the report item in the menu. Available statuses are:
|
visiblemessage (string) | Tooltip text shows for visible report items when cursor is moved over the report item. The text may contain html code. |
disabledmessage (string) | Tooltip text shown for disabled report items when cursor is moved over the report item. The text may contain html code. |
accessrights (boolean) | Determines if user has access to see the report item as boolean value (“true” if there are rights to see the report item). |
[OpenWindow parameters] | QPR Portal’s OpenWindow function parameters. These parameters determine e.g. size and position of the window. Available parameters:
|
Portal Context Parameters
The following table lists information that can be passed to reports as url parameters.
Parameter | Description |
---|---|
modelid | PD/EA or Metrics model id |
diagramid | Diagram id (i.e. process level). Note that for the top diagram level, the id is "PG.<modelid>.0" which represents the model object. |
objectid | Object in details pane. |
tab | Name of the tab where the report is run. |
zoom | Zoom percentage. Only available in PD/EA tabs. |
viewid | View id |
xsession | QPR Web Service session id. External report can use this to login to QPR Web Service. |
portalsessionid | QPR Portal session id. Note that this is different than QPR Web Service session id. Portal session id is needed, when the url refers to the QPR Portal itself and no Windows authentication is used. QPR Portal session id is added to the url as a parameter named SES. |
currentuserid | Current user id. |
scorecardid | Scorecard id. Only available in Metrics. |
seriesid | Series id. Only available in Metrics. |
periodid | Period id. Only available in Metrics. |
Acknowledgements
Open XML Power Tools. Copyright (c) Microsoft Corporation
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. 1. Definitions The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. A "contribution" is the original software, or any additions or changes to the software. A "contributor" is any person that distributes its contribution under this license. "Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors'name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim areinfringed by the software, your patent license from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent,trademark, and attribution notices that are present in the software.
(D) If you distribute any portion of the software in source code form, you may do so onlyunder this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors giveno express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
Copyright 2014 Microsoft Open Technologies, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
NCalc. Copyright (c) 2011 Sebastien Ros
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.