{"id":33515,"date":"2017-12-07T08:21:44","date_gmt":"2017-12-07T00:21:44","guid":{"rendered":"http:\/\/localhost\/help\/?page_id=33515"},"modified":"2018-02-12T10:29:59","modified_gmt":"2018-02-12T02:29:59","slug":"server-release-4-5-4","status":"publish","type":"page","link":"https:\/\/oihelp.corporate.ifs.com\/help\/p2-server\/server-releases\/server-release-4-5-4\/","title":{"rendered":"Server Release 4.5.4"},"content":{"rendered":"\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1222\" src=\"https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon.png\" alt=\"P2_RGB Server Icon\" width=\"112\" height=\"129\" srcset=\"https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon.png 248w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon-130x150.png 130w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon-21x24.png 21w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon-31x36.png 31w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2015\/02\/P2_RGB-Server-Icon-42x48.png 42w\" sizes=\"auto, (max-width: 112px) 100vw, 112px\" \/><\/p>\n<p class=\"intro-text\">P2 Server 4.5 is the engine that powers <strong>data retrieval<\/strong> from a variety of disparate sources, with built-in <strong>relationship models<\/strong> based on a Data Dictionary. P2 Server is how you get your data, transform it into more useful data, and then serve it up to other applications such as P2 Explorer or P2 Sentinel, for further analysis.<\/p>\n<p class=\"intro-text\">Patch Release 4.5.4 introduces the new \u2018Adaptive Raw\u2019 sample method, support for .gif images, and wildcard filtering. The \u2018R Language\u2019 infrastructure is now also available as a separate licensable component.<\/p>\n<hr \/>\n<h2 class=\"page-subheading\">R Language Integration<\/h2>\n<p class=\"intro-text\">This release of P2 Server introduces the R Language infrastructure, available as a separate licensable component. R is an open source programming language and software environment for statistical computing and graphics that is supported by the <em>R Foundation for Statistical Computing<\/em>.<\/p>\n<p class=\"note\">Before you can use the R Script component, ensure that <strong>Microsoft<\/strong> <strong>R Open 3.3.3<\/strong> <strong>or later<\/strong> (or the standard R installation) is installed on the same machine as P2 Server.<\/p>\n<h3>R Language Calculations<\/h3>\n<p class=\"intro-text\">The R Language calculations allow you to access R, as a way of analysing data within your calculations.<\/p>\n<p class=\"intro-text\"><strong>RTimeSeries<\/strong>()<\/p>\n<p class=\"intro-text\">The new RTimeSeries() calculation function allows users to pass an R script into the calculation, and return values as time series data.<\/p>\n<p class=\"intro-text\">Format: <span class=\"code-fragment\">RTimeSeries (Script [,Timestamp Pattern] [,Parameters])<\/span><\/p>\n<p class=\"intro-text\"><strong>Inputs<\/strong>:<\/p>\n<table>\n<tbody>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"113\"><strong>Script<\/strong><\/td>\n<td width=\"491\">The R Input Symbols in a script that uses the R Language syntax.<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"113\"><strong>Timestamp Pattern<\/strong><\/td>\n<td width=\"491\">The formatting string used to pass the timestamps of the data points as text e.g. dd\/M\/yyyy H:mm:s<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"113\"><strong>Parameters<\/strong><\/td>\n<td width=\"491\">The parameters to use as inputs for the Script.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"intro-text\"><strong>Examples<\/strong>:<\/p>\n<p class=\"intro-text\">Expression: <span class=\"code-fragment\">RTimeSeries('output$value &lt;- parameter1', null, 5.6)<\/span><br \/>\n Output: Returns 5.6 as the value for each timestamp.<\/p>\n<p class=\"intro-text\">Expression: <span class=\"code-fragment\">RTimeSeries('output$value &lt;- parameter1Name', null, 2.2 + 3.4)<\/span><br \/>\n Output: Returns the string 2.2 + 3.4 as the value for each timestamp.<\/p>\n<p class=\"intro-text\">Expression: <span class=\"code-fragment\">RTimeSeries('output$value &lt;- smooth.spline(parameter1$timestamp, parameter1$value)$y', null, {silver})<\/span><br \/>\n Output: Fits a cubic smoothing spline on the values fetched by the Silver tag.<\/p>\n<h3>R Adaptor<\/h3>\n<p class=\"intro-text\">The R adaptor is responsible for executing R scripts for the R Language functions. This adaptor supports 64-bit R engines and allows parallel R script execution by running multiple R adaptors at once with one R engine instance in each.<\/p>\n<p class=\"intro-text\">The R Adaptor differs from other adaptors in that it does not appear in P2 Server Management. Configuring the R Adaptor is done configured through the ServerConfig.xml. Here is an example configuration:<\/p>\n<pre class=\"lang:xhtml decode:true \" title=\"R Adaptor\">&lt;ConfigGroup Name=\"R Adaptor\"&gt;\r\n     &lt;Param Key=\"RHome\" Value=\"C:\\Program Files\\Microsoft\\R Open\\R-3.4.0\" \/&gt;\r\n     &lt;Param Key=\"RRelativePath\" Value=\"bin\\x64\" \/&gt;\r\n     &lt;Param Key=\"RAdaptorEnabled\" Value=\"false\" \/&gt;\r\n     &lt;Param Key=\"RAdaptorMinPoolSize\" Value=\"2\" \/&gt;\r\n     &lt;Param Key=\"RAdaptorMaxPoolSize\" Value=\"8\" \/&gt;\r\n     &lt;Param Key=\"RAdaptorInitTimeout\" Value=\"60\" \/&gt;\r\n     &lt;Param Key=\"RAdaptorRequestTimeout\" Value=\"600\" \/&gt;\r\n     &lt;CollectionParam Key=\"RAdaptorDisabledFunctions\" Value=\"\" \/&gt;\r\n     &lt;CollectionParam Key=\"RAdaptorEnabledPackages\" Value=\"\" \/&gt;\r\n&lt;\/ConfigGroup&gt;<\/pre>\n<p class=\"intro-text\">The parameters are described as follows:<\/p>\n<table>\n<tbody>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"120\"><strong>RHome<\/strong><\/td>\n<td>Main folder of the R installation.<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RRelativePath<\/strong><\/td>\n<td>Relative path of the R engine within the RHome folder.<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorEnabled<\/strong><\/td>\n<td><strong>True<\/strong> or <strong>False<\/strong>. Indicates whether the R Adaptor and thus executing R scripts is enabled. Default: false<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorMinPoolSize<\/strong><\/td>\n<td>The smallest number of R Adaptor instances that will always be available to execute R scripts. Default: 2<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorMaxPoolSize<\/strong><\/td>\n<td>Largest number of R scripts that the system will attempt to execute simultaneously. Default: 8<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorInitTimeout<\/strong><\/td>\n<td>Time limit (in seconds) allowed for the R Adaptor to initially set up and configure the R engine before timing out. Default: 60<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorRequestTimeout<\/strong><\/td>\n<td>Time limit (in seconds) applied to all non-initialization operations against the R Adaptor. Default: 600<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorDisabledFunctions<\/strong><\/td>\n<td>Comma-separated list of additional R functions which are not allowed to be executed in R scripts. The following functions are considered insecure and are already permanently disabled in the R Adaptor: detach(), eval(), file.remove(), install.packages(), library(), require(), shell(), source(), system(), system2(), and unlink().<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\"><strong>RAdaptorEnabledPackages<\/strong><\/td>\n<td>Comma-separated list of R packages which will be pre-loaded by the R Adaptor for executing R scripts. If a package is not in this list then it cannot be used inside a R expression. See <em>Installing New Packages<\/em> below.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"intro-text\"><strong>Installing New Packages<\/strong><\/p>\n<p class=\"intro-text\">New packages cannot be installed using the standard installation functions, and must be installed by the system administrator. To install new packages:<\/p>\n<ol class=\"intro-text\">\n<li>Download and install the R package onto the P2 Server machine.<\/li>\n<li>Add the name of the new package to the <strong>RAdaptorEnabledPackages<\/strong> This will ensure that the R adaptor will load and allow the new R package to be used.<\/li>\n<li>Restart the Data Broker Windows service to force the R adaptor to pick up the changes.<\/li>\n<\/ol>\n<hr \/>\n<h2 class=\"page-subheading\">GIF Image Support<\/h2>\n<p class=\"intro-text\">You can now add <strong>.gif<\/strong> images in P2 Server Management. This is in addition to existing support for .png, .jpg, .ico, and .svg images.<\/p>\n<p><a href=\"https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454.png\" rel=\"lightbox-0\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-33528\" src=\"https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454.png\" alt=\"\" width=\"1141\" height=\"549\" srcset=\"https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454.png 1141w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454-768x370.png 768w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454-150x72.png 150w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454-24x12.png 24w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454-36x17.png 36w, https:\/\/oihelp.corporate.ifs.com\/help\/wp-content\/uploads\/2017\/11\/image-gif-support-454-48x23.png 48w\" sizes=\"auto, (max-width: 1141px) 100vw, 1141px\" \/><\/a><\/p>\n<p class=\"left-bar\">Read more: <a href=\"https:\/\/oihelp.corporate.ifs.com\/help\/p2-server\/configuring-your-system\/adding-images\/\">Adding Images in Server Management<\/a><\/p>\n<hr \/>\n<h2 class=\"page-subheading\">Wildcard Filtering<\/h2>\n<p class=\"intro-text\">Wildcard filtering is now available in P2 Server Management and the P2 Server API.<\/p>\n<ul>\n<li class=\"intro-text\">In the API, wildcards can be used by specifying a new filter querystring parameter in the URL (e.g. ?filter=*ilv*)<\/li>\n<li class=\"intro-text\">In Server Management, filters for tags and entities now accept wildcard characters.<\/li>\n<\/ul>\n<p class=\"intro-text\">The following wildcards are available:<\/p>\n<p class=\"intro-text\"><strong>*<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Match any number of characters either before or after the asterisk<br \/>\n ? \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Match a single character<\/p>\n<p class=\"intro-text\">You can use wildcard filters to filter on names and descriptions for tags and entities. Here are some examples:<\/p>\n<table width=\"0\">\n<thead>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>Example<\/strong><\/td>\n<td width=\"287\"><strong>P2 Server Management Result (tag\/entity search)<\/strong><\/td>\n<td width=\"271\"><strong>API Result (new <em>filter<\/em> parameter)<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>ilv<\/strong><\/td>\n<td width=\"287\">Return anything containing <strong>ilv<\/strong><em> (this was also the previous behaviour)<\/em><\/td>\n<td width=\"271\">Return an exact match for <strong>ilv<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>*ilv*<\/strong><\/td>\n<td width=\"287\">Return anything containing <strong>ilv<\/strong><\/td>\n<td width=\"271\">Return anything containing <strong>ilv<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>*ing<\/strong><\/td>\n<td width=\"287\">Return anything ending with <strong>ing<\/strong><\/td>\n<td width=\"271\">Return anything ending with <strong>ing<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>silv*<\/strong><\/td>\n<td width=\"287\">Return anything starting with <strong>silv<\/strong><\/td>\n<td width=\"271\">Return anything starting with <strong>silv<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>s*r<\/strong><\/td>\n<td width=\"287\">Return anything starting with <strong>s<\/strong> and ending with <strong>r<\/strong><\/td>\n<td width=\"271\">Return anything starting with <strong>s<\/strong> and ending with <strong>r<\/strong><\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>silv?r<\/strong><\/td>\n<td width=\"287\">Return anything starting with <strong>silv<\/strong> and ending with <strong>r<\/strong>,\u00a0 with a single character in between<\/td>\n<td width=\"271\">Return anything starting with <strong>silv<\/strong> and ending with <strong>r<\/strong>,\u00a0 with a single character in between<\/td>\n<\/tr>\n<tr style=\"border: 1px solid #cccccc;\">\n<td style=\"padding-left: 5px;\" width=\"65\"><strong>s????r<\/strong><\/td>\n<td width=\"287\">Return anything starting with <strong>s<\/strong> and ending with <strong>r<\/strong>, with 4 characters between<\/td>\n<td width=\"271\">Return anything starting with <strong>s<\/strong> and ending with <strong>r<\/strong>, with 4 characters between<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"note\">Note: In P2 Server Management, the previous behaviour was to treat <strong>*<\/strong> and <strong>?<\/strong> as literal characters that should be matched.<\/p>\n<p class=\"left-bar\">Read more: <a href=\"https:\/\/oihelp.corporate.ifs.com\/help\/p2-server\/primers\/overview-of-server-management\/\">Server Management Navigation Overview<\/a><\/p>\n<hr \/>\n<h2 class=\"page-subheading\">New \u2018Adaptive Raw\u2019 Sample Method<\/h2>\n<p class=\"intro-text\">The new <em>Adaptive Raw<\/em> sample method allows raw data to be displayed by consuming applications, such as the Explorer trend, at a much faster rate than was previously possible using raw data.<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<h2 class=\"page-subheading\">Previous Releases<\/h2>\n<p class=\"intro-text\">For a complete list of P2 Server release notes, see <a href=\"https:\/\/oihelp.corporate.ifs.com\/help\/p2-server\/server-releases\/\">Server Releases<\/a>.<\/p>\n<p class=\"intro-text\">\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Patch Release 4.5.4 introduces the new \u2018Adaptive Raw\u2019 sample method, support for .gif images, and wildcard filtering. The \u2018R Language\u2019 infrastructure is now also available as a separate licensable component.<\/p>\n<p class=\"continue-reading-button\"> <a class=\"continue-reading-link\" href=\"https:\/\/oihelp.corporate.ifs.com\/help\/p2-server\/server-releases\/server-release-4-5-4\/\">Read more<i class=\"crycon-right-dir\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":33516,"parent":28839,"menu_order":5,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[7],"tags":[],"class_list":["post-33515","page","type-page","status-publish","has-post-thumbnail","hentry","category-release-notes","Version-4-5-4","Product-srv"],"_links":{"self":[{"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/pages\/33515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/comments?post=33515"}],"version-history":[{"count":0,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/pages\/33515\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/pages\/28839"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/media\/33516"}],"wp:attachment":[{"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/media?parent=33515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/categories?post=33515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oihelp.corporate.ifs.com\/help\/wp-json\/wp\/v2\/tags?post=33515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}