QEST Platform 4.81
Applies to QESTNet
This article details the configuration for the QESTNet product.
Contents
QESTNET.exe.config
QESTNET.exe.config is the primary configuration file for the QESTNet service and resides side-by-side with the service executable, QESTNET.exe. The file is in XML format and can be edited by any standard text or XML editor. The initial config file contains the major sections as shown below. Each section is described in this article. Note that some sections should not generally be modified without the advice of Spectra QEST. Sections that will need to be customised for the specific QESTNet instance are described in the Specific Configuration section below.
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections>...</configSections> <appSettings>...</appSettings> <qestnet>...</qestnet> <fileSmtpIntegrators>...</fileSmtpIntegrators> <castle>...</castle> <log4net>...</log4net> <entityFramework>...</entityFramework> <connectionStrings>...</connectionStrings> <system.web>...</system.web> <system.net>...</system.net> <system.serviceModel>...</system.serviceModel> <startup>...</startup> </configuration>
General Configuration
This section describes the general configuration of the QESTNet service that all instances will have. It is usually not necessary to modify the configuration sections described in this section.
configSections
This section defines the structure of later sections of the QESTNET.exe.config file. Do not change this section unless advised to do so by Spectra QEST.
appSettings
This section contains name-and-value pairs for commonly modified settings.
<appSettings> <add key="verifyDatabase" value="False" /> <add key="logQueryTiming" value="False" /> <add key="concurrencyResolution" value="MergeOurs" /> <add key="numberOfPersistAttempts" value="5" /> <add key="enableLocking" value="False" /> <add key="PdfiumOctTreeQuantization" value="true" /> <add key="PdfiumRenderDpi" value="300" /> <add key="PdfiumRenderSize" value="1200" /> <add key="PdfPreviewHeight" value="240" /> <add key="PdfPreviewWidth" value="176" /> </appSettings>
Setting | Value Type | Default Value | Description |
---|---|---|---|
verifyDatabase | True/False | False | When set to "true" the database structure will be fully verified against the structure expected by QESTNet on first access to the database. This will cause a delay of several minutes while the verification runs. Not recommended for production systems. |
logQueryTiming | True/False | False | When set to "true" the database queries run by QESTNet will be written to the logs along with the execution time of those queries. This has a performance impact and should not be enabled for a production system. |
concurrencyResolution | text | MergeOurs | Defines the resolution strategy used by QESTNET to resolve concurrent database updates for documents. The acceptable values are as follows:
The default, MergeOurs, is recommended for most installations. |
numberOfPersistAttempts | int | 5 | Specifies the number of times that QESTNet will attempt to resolve a commit to the database when concurrent updates are occurring. When defined, this setting must be set to a number between 1 and 20, inclusive. Changing this setting is not recommended. |
enableLocking | True/False | False | When set to "true" SessionConnection records will be added and removed from the database when users log in and out of QESTNet via any application. Additionally, a document lock will be written for a Work Order whenever it is opened in the View Work Order workflow in QESTField. All locks are removed when returning to the "home" search page in QESTField. These document locks will prevent users within QESTLab and QESTField from working on any documents associated with the same work order at the same time. |
emailWarningSize | int (bytes) | 5242880 | The threshold in bytes at which emails sent via QESTNet will display a warning to the user. This is currently only applicable to workflows such as the Daily Field Inspection which allow summary emails with test report images to be sent. The default value is 5242880 (5MB). |
PdfiumOctTreeQuantization | True/False | True | Enables fast rendering high quality images to low quality |
PdfiumRenderDpi | float | 300 | The rendering of pdf pages to images to this dpi (dots per inch) |
PdfiumRenderSize | int (px) | 1200 | The rendering of pdf pages to images to this size in px (square) |
PdfPreviewHeight | int (px) | 240 | Scales the rendered image to this height (px). Note; the original aspect ratio is maintained |
PdfPreviewWidth | int (px) | 176 | Scales the rendered image to this width (px). Note; the original aspect ratio is maintained |
sqlCommandTimeout | int (seconds) | 60 | The default timeout for SQL queries executed by QESTNet. If infrastructure is slow and queries are timing out too soon, this can be increased to avoid errors. |
qestnet
This section contains configuration subsections that related specifically to the QESTNet service. Portions of this section will be general and others specific to a given instance of QESTNet.
<qestnet> <engine>...</engine> <services>...</services> <modules>...</modules> <dataIntegrators>...</dataIntegrators> <store fileStorePath="C:\QESTNET\File Store\" /> </qestnet>
engine sessions
This section defines the sessions supported by QESTNet . Sessions hold state information for a given user for a given duration. By default there are two:
- IntegrationSession: holds the available data integrators ready to be triggered by timers or by user action.
- LabSession: holds the open documents of a user using the Lab functionality - such as through QESTField.
<engine> <sessions> <add name="LabSession" assemblyName="QESTNET.Sessions.Lab" typeName="Spectra.QESTNET.Sessions.Lab.LabSession" lifetime="01:00:00"/> <add name="IntegrationSession" assemblyName="QESTNET.Sessions.Integration" typeName="Spectra.QESTNET.Sessions.Integration.IntegrationSession" lifetime="9999.00:00:00" /> </sessions> </engine>
Notes:
- lifetime is a time span value which defines the duration after which a session will be terminated by QESTNet if there has been no activity from the client.
- The default value for LabSession, which is used for QESTField sessions, is one hour. This value can be set lower to terminate sooner and clear memory faster, however setting it too low can be inconvenient to users who would lose any unsaved work and be forced to log in again.
- The default value for IntegrationSession, which is used for running data integrators, is 9999 days. This is to ensure the session will not terminate and stop running timed integrators.
- For information on the TimeSpan string format see: https://msdn.microsoft.com/en-us/library/se73z7b9(v=vs.110).aspx
services
This section defines the services supported by QESTNet. Services define the external contracts of communication with QESTNet. In the default configuration there are two:
- IntegrationService for data integration with remote systems.
- LabService for providing QESTLab functionality to clients such as QESTField.
- APIService for providing QESTNet functionality to QESTField through the Web Api.
Modification of this section is not commonly required.
<services> <add name="IntegrationService" assemblyName="QESTNET.Sessions.Integration" typeName="Spectra.QESTNET.Sessions.Integration.IntegrationSessionService" startAdminSession="True" /> <add name="LabService" assemblyName="QESTNET.Sessions.Lab" typeName="Spectra.QESTNET.Sessions.Lab.LabSessionService" /> <add name="ApiService" assemblyName="QESTNET.Api" typeName="Spectra.QESTNET.Api.ApiStartup" webApiAddress="http://*:53535" /> </services>
modules
The list of assemblies from which workflow definitions and data contracts are obtained. The default modules are:
- Workflow: defines the standard core workflows of the Lab Session (used by QESTField).
- Contracts.Models: defines the data contracts used for communication with the Lab Session (used by QESTField).
- API.Concrete: defines the concrete endpoints available through the Web Api.
- API.Forms: defines the forms endpoints available through the Web Api.
castle
This section defines the installers used to identify service classes used with QESTNet. Do not change this section unless advised to do so by Spectra QEST.
log4net
The popular logging system log4net is used for logging from QESTNet. General QESTNet logging and logging for licensing are configured separately. The default configuration:
- Writes general logging to rolling files, one file per day, in the location [ProgramData]\Spectra QEST\QESTNET vX.X\Logs. The files are prefixed with qestnet-log.
- Writes licensing logging to rolling files, one file per day, in the location [ProgramData]\Spectra QEST\QESTNET vX.X\Logs. Licensing files are prefixed with licensing-log.
<log4net> <!-- General QESTNet logging --> <appender name="QESTNetRollingFile" type="log4net.Appender.RollingFileAppender"> <file value="${ALLUSERSPROFILE}\Spectra QEST\QESTNET vX.X\Logs\qestnet-log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=".yyyy.MM.dd.\t\x\t" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level %message%newline" /> </layout> </appender> <logger name="Spectra"> <level value="WARN" /> <appender-ref ref="QESTNetRollingFile" /> </logger> <!-- Licensing logging --> <appender name="LicensingRollingFile" type="log4net.Appender.RollingFileAppender"> <file value="${ALLUSERSPROFILE}\Spectra QEST\QESTNET vX.X\Logs\licensing-log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <datePattern value=".yyyy.MM.dd.\t\x\t" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level %message%newline" /> </layout> </appender> <logger name="LicensingLogger"> <level value="INFO" /> <appender-ref ref="LicensingRollingFile" /> </logger> </log4net>
For advanced configuration of log4net, the manual is available here: https://logging.apache.org/log4net/release/manual/configuration.html#files
entityFramework
This section defines the core providers used in communication with the database. Do not change this section unless advised to do so by Spectra QEST.
system.Web
This section defines core providers. Do not change this section unless advised to do so by Spectra QEST.
system.serviceModel
This area defines the configuration settings for the WCF services provided by QESTNet. For more information on how to customise any area of system.serviceModel, see: https://msdn.microsoft.com/en-us/library/ms731354(v=vs.110).aspx
bindings
This section defines the binding configurations used to expose the QESTNet services. The default binding configurations included in the config file are as shown:
<bindings> <netTcpBinding> <binding name="UnsecuredBindingTcp"> <security mode="None" /> </binding> <binding name="FileStreamBindingTcp" transferMode="Streamed" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"> <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" /> <security mode="None" /> </binding> </netTcpBinding> <netNamedPipeBinding> <binding name="UnsecuredBindingNamedPipe"> <security mode="None" /> </binding> </netNamedPipeBinding> </bindings>
- UnsecuredBindingTcp: a TCP binding with no security enabled, used to expose the LIMS functionality to clients on the same local network (e.g. QESTField).
- FileStreamBindingTcp: a streaming TCP binding with no security enabled, used to transfer files to and from the QESTNet to clients on the same local network (e.g. QESTField).
- UnsecuredBindingNamedPipe: a named pipe binding with no security enabled, used to expose Data Integrator management functionality to clients on the same machine (e.g. QESTNet Console)
Binding properties can be adjusted or additional bindings can be added as the situation requires it. For example an HTTP binding can be added to expose QESTNet functionality on the web.
For more information on how to customise service bindings, see: https://msdn.microsoft.com/en-us/library/ms731399(v=vs.110).aspx
behaviors
This section defines the service behaviours. By default there is a single common behaviour used by all QESTNet services defined as shown:
<behaviors> <serviceBehaviors> <behavior name="Spectra.QESTNET.Sessions.DefaultBehavior"> <serviceMetadata httpGetEnabled="false" /> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000" /> </behavior> </serviceBehaviors> </behaviors>
For more information on how to customise service behaviour, see: https://msdn.microsoft.com/en-us/library/aa967282(v=vs.110).aspx
services
This section defines the WCF services exposed by the QESTNet. By default there are two:
- Lab Service used by clients of LIMS functionality such as QESTField.
- Integration Service used by clients administering data integrators such as the QESTNet Console.
These services use the endpoints and behaviors defined previously.
<services> <!-- Lab Service --> <service behaviorConfiguration="Spectra.QESTNET.Sessions.DefaultBehavior" name="Spectra.QESTNET.Sessions.Lab.LabSessionService"> ... </service> <!-- Integration Service --> <service behaviorConfiguration="Spectra.QESTNET.Sessions.DefaultBehavior" name="Spectra.QESTNET.Sessions.Integration.IntegrationSessionService"> ... </service> </services>
Lab Service
<!-- Lab Service --> <service behaviorConfiguration="Spectra.QESTNET.Sessions.DefaultBehavior" name="Spectra.QESTNET.Sessions.Lab.LabSessionService"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="UnsecuredBindingTcp" name="Lab_Session" contract="Spectra.QESTNET.Contracts.ISessionService" /> <endpoint address="query" binding="netTcpBinding" bindingConfiguration="UnsecuredBindingTcp" name="Lab_Query" contract="Spectra.QESTLab.Contracts.ILabQueryService" /> <endpoint address="file" binding="netTcpBinding" bindingConfiguration="FileStreamBindingTcp" name="Lab_File" contract="Spectra.QESTLab.Contracts.ILabFileService" /> <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" name="Lab_MEX" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:52525/Lab" /> </baseAddresses> </host> </service>
The Lab Service contains four endpoints:
Endpoint Name | Address | Default Binding | Purpose |
---|---|---|---|
Lab_Session | / | Unsecured TCP | Provides fundamental QESTNet session control functions such as opening and closing sessions and the sending of commands to QESTNet. |
Lab_Query | /query | Unsecured TCP | Provides data structures of information relating to LIMS functionality based on certain request formats. |
Lab_File | /file | Unsecured Streaming TCP | Streams the data content of large files. |
Lab_MEX | /mex | Metadata Exchange TCP | Provides information about the service and its endpoints |
The Lab Service also specifies a host base address:
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:52525/Lab" />
</baseAddresses>
</host>
Only the protocol and the port should be changed when customised binding is used. The host name of localhost and the path of Lab should not be changed. This baseAddress is for convenience of configuration and is simply added to the start of the Address for each endpoint.
Integration Service
<!-- Integration Service --> <service behaviorConfiguration="Spectra.QESTNET.Sessions.DefaultBehavior" name="Spectra.QESTNET.Sessions.Integration.IntegrationSessionService"> <endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="UnsecuredBindingNamedPipe" name="Integration_Session" contract="Spectra.QESTNET.Contracts.ISessionService" /> <endpoint address="integration" binding="netNamedPipeBinding" bindingConfiguration="UnsecuredBindingNamedPipe" name="Integration_Integration" contract="Spectra.QESTNET.Integration.Contracts.IIntegrationService" /> <endpoint address="mex" binding="mexNamedPipeBinding" bindingConfiguration="" name="Integration_MEX" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="net.pipe://localhost/Integration" /> </baseAddresses> </host> </service>
The Integration Service contains three endpoints:
Endpoint Name | Address | Default Binding | Purpose |
---|---|---|---|
Integration_Session | / | Unsecured Named Pipe | Provides fundamental QESTNet session control functions such as opening and closing sessions and the sending of commands to QESTNet. |
Integration_Query | /integration | Unsecured Named Pipe | Provides methods for the control of data integration modules. |
Integration_MEX | /mex | Metadata Exchange Named Pipe | Provides information about the service and its endpoints |
The Integration Service also specifies a host base address:
<host> <baseAddresses> <add baseAddress="net.pipe://localhost/Integration" /> </baseAddresses> </host>
Only the protocol and the port should be changed when customised binding is used. The host name of localhost and the path of Integration should not be changed. This baseAddress is for convenience of configuration and is simply added to the start of the Address for each endpoint.
startup
This section defines the expected version of the .NET Framework. Do not change this section unless advised to do so by Spectra QEST.
Specific Configuration
These sections of QESTNet.exe.config are likely to differ for each organization's instance of QESTNet.
qestnet
This section contains configuration subsections that related specifically to the QESTNet service. Portions of this section will be general and others specific to a given instance of QESTNet. It is usually necessary to modify the configuration sections described in this section to be applicable to the given network and QESTNet instance.
<qestnet> <engine>...</engine> <services>...</services> <modules>...</modules> <dataIntegrators>...</dataIntegrators> <store fileStorePath="C:\QESTNET\File Store\" /> </qestnet>
modules
If there are any custom workflows to use, their assemblies for workflows and contracts must also be defined here. The required definitions for known configurations are published in sample configuration files with QESTNet.
<modules> <add name="Contracts.Models" assemblyName="QESTLab.Contracts.Models" /> <add name="Workflow" assemblyName="QESTLab.Workflow" /> <add name="Api.Concrete" assemblyName="QESTNET.Api.Concrete" /> <add name="Api.Forms" assemblyName="QESTNET.Api.Forms" /> </modules>
store
This section defines the file store path used by QESTNet. This setting can be omitted or left with the default path, even if the path is invalid; the file store is deprecated and used only in very specific circumstances.
<store fileStorePath="C:\QESTNET\File Store\" />
dataIntegrators
This section is where the available data integrators for the deployment are defined. This section is not required it only needs to exist when data integration is being used. The Spectra QEST services team will advise if any data integrators additional to the notification email summarising license use is required.
<dataIntegrators> <add name ="Example Data Integrator" assemblyName ="QESTNET.Custom.Company" pluginType ="Spectra.QESTNET.Custom.Company.ExampleDataIntegrator" integratorConfigFile="Z:\path\to\config_file.ext" inputName ="InputCS" outputName ="OutputCS" fileSystemWatchDirectory ="\\someserver\some\directory" fileSystemWatchFilter = "apattern_*.ext" transferInterval ="01:00:00" timeDelay ="" dateDelayUntil ="" timeDelayUntil ="" state ="Stopped" isThreadSafe ="False" waitForIntegratorNames ="Emample Integrator A,Example Integrator B" /> </dataIntegrators>
Each data integrator can have the following properties:
- name: Required. The identifier for the data integrator. Each integrator must have a unique name.
- assemblyName Required. The assembly that the custom code class is located in.
- pluginType: Required. The custom code class which contains the logic for the data integrator.
- integratorConfigFile: Optional. Only used by integrators which understand it. A config file with integrator-specific configuration.
- inputName: Optional. Typically required by integrators that don't use an external configuration. The data source from which the integrator will extract data. This value will typically correspond to the name of a connection string in the connectionStrings section. If it does, then that connectionString is used to open the input data source.
- outputName: Optional. Typically required by integrators that don't use an external configuration. The data source to which the integrator will write data. This value will typically correspond to the name of a connection string in the connectionStrings section. If it does, then that connectionString is used to open the output data source.
- fileSystemWatchDirectory: Optional. An alternative to timers, executes the integrator when a file is created, modified or renamed in this directory. Can be a local or network path. Requires a fileSystemWatchFilter to be specified. An integrator using this will attempt to open the files it finds for reading, and will ignore any of the timer based options. All integrators using a file system watch are assumed to be threadsafe for handling multiple files that are created, etc. at the same time.
- fileSystemWatchFilter: Optional. Required with fileSystemWatchDirectory. Restricts which files will be noticed by the file system watcher. Is a pattern using an asterisk (*) for a wildcard that can be any sequence of up to any length.
- transferInterval: After executing having executed the first time, the period a started data integrator will wait before executing again.
- timeDelay: The period which a started data integrator will wait before first executing.
- dateDelayUntil: A list of common delays until which a started data integrator will wait before executing for the first time. Possible values: "NextSunday", "NextMonday", "NextTuesday", "NextWednesday", "NextThursday", "NextFriday", "NextSaturday", "NextMonthFirst", "ThisMonthLast"
- timeDelayUntil: The time until which a started data integrator will wait before executing for the first time, once the dateDelayUntil has been satisfied.
- state: Whether or not the timer clock is currently running for this data integrator. Valid values are "Stopped" and "Started". QESTNet will initialise the timer clock for the integrator based on this value such that a running timer clock will restart even if the QESTNet restarts. NOTE: the "Started" state does not mean the data integrator itself is currently executing, simply that the timer clock is. Only data integrators with a value for one or more of transferInterval, timeDelay, dateDelayUntil or timeDelayUntil can be started.
- waitForIntegratorNames: a comma separated list of names of integrators that this integrator should wait to finish before it begins running. This doesn't trigger the integrator to begin running, it still requires either a timer, or a file system watch to be configured. This must not be configured in a way that causes an integrator to wait for itself, even indirectly - e.g. two integrators that are both configured to wait for each other - this will cause a deadlock where neither integrator will ever run.
Licensing Email Data Integrator
While all integrators are optional it is strongly recommended that all organizations include the Licensing Emailer data integrator and associated fileSmtpIntegrator configuration section (discussed below) in order for QEST Platform administrators to receive notification emails about important license events as described in Checking License Use for QESTField Tests and QESTField Forms.
Use of the licensing email data integrator has the following prerequisites:
- Logging for licensing events is configured as described in the log4net section
- Email delivery details are configured as described in the Settings for Email section of the System.net section below
- The fileSmtpIntegrator configuration is defined as described below
- This line appears in the configSections element of the configuration file:
<configuration> <configSections> <section name="fileSmtpIntegrators" type="Spectra.QESTNET.Integration.FileSmtp.FileSmtpIntegratorsConfigurationSection, QESTNET.Integration" /> </configSections>
The standard configuration for this integrator is shown below, it will set the integrator to run daily at 10pm according to the server time on which the QESTNet service is running:
<dataIntegrators> <!-- Other integrators defined here (if any)--> <!-- Run daily at 10pm --> <add name="Licensing Emailer" assemblyName="QESTNET.Integration" pluginType="Spectra.QESTNET.Integration.FileSmtp.LicensingSmtpIntegrator" inputName="" outputName="" transferInterval="1.00:00:00" timeDelay="" dateDelayUntil="" timeDelayUntil="22:00:00" state="Started" isThreadSafe="False" /> </dataIntegrators>
fileSMTPIntegrator
This configuration is used to provide extra details for the running of the Licensing Emailer data integrator (see data integrators for more information) and is required in order for QEST Platform administrators to receive notification emails about important license events as described in Checking License Use for QESTField Tests and QESTField Forms.
<!-- Additional configuration for file integrators --> <fileSmtpIntegrators> <add name="Licensing Emailer" fromAddress="mailbot@sqaus.example" subject="QEST Platform Licensing Activity Summary" body="The following is a summary of logged QEST Platform licensing activity from the previous day." sourceDirectory="${ALLUSERSPROFILE}\Spectra QEST\QESTNET vX.X\Logs" filePattern="licensing-log*.txt" archiveDirectory="${ALLUSERSPROFILE}\Spectra QEST\QESTNET vX.X\Logs\archive" > <to> <add address="recipient01@sqaus.example" /> <add address="recipient02@sqaus.example" /> </to> </add> </fileSmtpIntegrators>
The fileSmtpIntegrator has the following, mandatory, properties:
- name should be set as "Licensing Emailer"
- fromAddress should be set as the from address that the generated emails will use. Note that if the emails are ever replied to, this email address will receive the replies
- subject will be the subject on any notification emails. If left blank, the generated emails will not contain a subject
- body will be the text preceding the licensing summary
- sourceDirectory should be the directory where the licensing log files are being generated per the log4net configuration
- filePattern must match the filename pattern of the licensing log files as set in the log4net configuration
- archiveDirectory the directory to which the processed log files are moved after processing. This directory will need to be manually created with write permissions granted to the service user running the QESTNet service or an error will appear in the QESTNet log file stating that the directory does not exist every time the integrator runs.
In addition to the above properties, the integrator will expect collection of recipient email addresses to whom the summary email should be sent. It is recommended these are set to be the email addresses of the QEST Platform administrators.
connectionStrings
This section defines the connection strings which QESTNet can use to connect to databases. The three areas which use these are the Lab Session (to provide LIMS functionality via QESTNet), publishing to Construction Hive, and any Data Integrators that directly transfer data between databases.
<connectionStrings> <add name="QESTLab_Data" providerName="..." connectionString="..." /> <add name="HivePublish_Data" providerName="..." connectionString="..." /> <add name="Remote_System_1" providerName="..." connectionString="..." /> <add name="Remote_System_2" providerName="..." connectionString="..." /> </connectionStrings>
Lab Session
The Lab Session uses the connection string with the name QESTLab_Data to connect to the QESTLab database. The default connection string looks like:
<add name="QESTLab_Data" providerName="System.Data.SqlClient" connectionString=" data source=SQL_INSTANCE; initial catalog=DATABASE_NAME; integrated security=True; multipleactiveresultsets=True; App=QESTNET" />
Upon installation the values SQL_INSTANCE and DATABASE_NAME must be replaced with the details of the relevant QESTLab database. Further changes can be made to the connection string as required, such as to change security modes.
Construction Hive Publishing
To be able to publish documents to Construction Hive, a connection string with the name HivePublish_Data is required that connects to the Construction Hive publishing database.
Data Integrators
QESTNET data integrators can connect directly to databases to exchange information. The connection strings to do so are specified here and each is given a name. This name may be referenced in the dataIntegrators configuration in the qestnet section described earlier.
Settings for email
Publishing through QESTField products via email and the licensing summary emails, described in Checking License Use for QESTField Tests and QESTField Forms both require mail settings to be configured in QESTNET.exe.config. For more information, please refer to Microsoft Docs.
From Address
When the user publishing the document has an email address, QESTNet will use this for the email's From address. For users without an email address, the "from" address configured in these settings will be used.
Please note that if a "from" address is not configured in these settings, users without a recorded email address will not be able to publish documents via email.
<system.net> <mailSettings> <smtp deliveryMethod="network" from="qestnet@contoso.com"> <network host="localhost" port="25" defaultCredentials="true" /> </smtp> </mailSettings> </system.net>
Template Locations
Note: this does not currently need to be set as the default templates are initially sufficient for all customers.
QESTNet publishing includes support for customising the template files used to build email content. QESTNet can be configured to look for template files in specified paths. If this configuration section is not present, QESTNet will use the default templates.
<qestnet> <publishTemplateLocations> <email> <add path="C:\Templates" /> </email> </publishTemplateLocations> </qestnet>
QESTNet Api
HTTP URL ACL
The QESTNet service account needs to be able to listen on the QESTNet API address - by default, http://*:53535/
From an admin command prompt:netsh http add urlacl url=http://*:53535/ user="qestnet.service@domain.example"
https://msdn.microsoft.com/en-us/library/windows/desktop/cc307223(v=vs.85).aspx
Configuration Data
Workflow Location Mappings
The QESTLab database table qestWorkflowLocationMapping stores mappings between the unique identifier of the QESTNet workflows and the unique identifier of the location. This controls workflow availability in QESTNet. If a mapping does not exist for a laboratory or a region it is within, then a workflow will not be visible at that laboratory.
Notes:
- The WorkflowUUID corresponds to workflows in the QESTNet code and do not relate to any other tables in the QESTLab database.
- The LocationID relates to Laboratory.QestUniqueID and can be joined to the Laboratory table to see further information about the locations.
- Workflow availability is inherited through the location hierarchy. If a region is mapped to a workflow then any laboratories or other locations within that region will also have access to the workflow. If the "default" or "root" location is mapped then all laboratories will see that workflow.
- qestWorkflowLocationMapping is typically populated via a configuration script with a name of the form: QESTField.Enable_Workflows.[COMPANYCODE].sql
Products described on these pages, including but not limited to QESTLab®, QESTNet, QESTField, Construction Hive, and associated products are Trademarks (™) of Spectra QEST Australia Pty Ltd and/or related companies.
The content of this page is confidential. Do not share, duplicate or distribute without permission.
© 2019 Spectra QEST® Australia Pty Ltd and/or related companies. Terms of Use and Privacy Statement