The Integration Theme files are installed in the ProgramData location for the version of DriveWorks in use.
For example:
C:\ProgramData\DriveWorks\[Version]\Live\Themes\Integration\
The files within this location make up the code for DriveWorks to host the Integration Theme endpoint.
These files are controlled by DriveWorks and will be subject to modifications from any subsequent upgrades.
This location also contains the files that store the connection and configuration settings.
These are known as:
The Base File is controlled by DriveWorks in the same way as the other files. The required settings should be copied from this file into the User File.
The User File does not get overwritten on upgrading or reinstalling DriveWorks. This file is specific to your requirements.
These files are server side configuration files, and are never served to the client (browser) so all security credentials are secure and never seen by the public.
The Base File is named DriveWorksConfig.xml.
This file must not be edited. Any future upgrades or reinstallation of DriveWorks will overwrite this file.
The required settings should be copied from this file into the User File.
The User File is named DriveWorksConfigUser.xml.
DriveWorks will create the DriveWorksConfigUser.xml file when the Integration Theme is selected (from the Theme selection task), and will include the configuration setting - staticFilesPath element.
This file (and all customizations within it) will remain untouched during uninstallation or reinstallation.
The User file stores the connection and configuration settings that will be used by the Integration Theme.
Not all configuration and connection settings need to be copied into the DriveWorksConfigUser.xml file.
Any settings that do not exist in the User File will be read from the Base File.
The most important aspect of this file, which will need to be configured, is the Group connection setting.
DriveWorks will create the DriveWorksConfigUser.xml file when the Integration Theme is selected (from the Theme selection task).
However, there are circumstances when the Integration Theme does not require to be selected and the DriveWorksConfigUser.xml file will not exist.
In this instance:
Connection Settings require to be included within the following element:
<connections> ---Copy the required xml below within these elements--- </connections>
To set up a connection to the Shared Group, include the following:
Group Alias
A Group Alias is a saved connection that can be easily retrieved using the Client SDK and the Server API.
<configuration> <sessionTimeout>15</sessionTimeout> <specificationTimeout>10</specificationTimeout> <serveDocumentation>false</serveDocumentation> <maxRequestBodySize>30000000</maxRequestBodySize> <connections> <sharedGroupAlias name="DriveWorks" serverAddress="PROSERVER" groupName="MyGroup" username="Admin" password=""> <permissions> <project name="Canopy"> <variable name="Discount"> <team name="Sales"/> </variable> <constant name="DiscountApplied"> <team name="Sales" canEdit="true"/> </constant> </project> </permissions> </sharedGroupAlias> </connections> </configuration>
Where:
The Group Alias cannot include any of the following:
Change the value ConnectionOne to the name to give to the group alias.
Change the value localhost to the name of the machine running Pro Server.
Change the value MyGroup to the group name as it appears inside Pro Server.
Change the value Admin to the Username to use by default.
Specifying Admin credentials will allow users to login with the Admin user, you may not want this, so we suggest creating a user with the correct permissions.
Change the value password to the Password to use by default.
The Integration Theme is the only Theme capable of hosting multiple groups.
It is also possible to have multiple group connections to the same group.
This allows you to test and deploy multiple groups across multiple websites and create different logins for different situations.
For example, having multiple connection strings allows:
For each required situation a new sharedGroupAlias string is created within the <connections> element.
<connections> <sharedGroupAlias name="Public" serverAddress="PROSERVER" groupName="ProductionGroup" username="Guest" password="Guest"></sharedGroupAlias> <sharedGroupAlias name="Distributor" serverAddress="PROSERVER" groupName="ProductionGroup"></sharedGroupAlias> <sharedGroupAlias name="Development" serverAddress="PROSERVER" groupName="DevelopmentGroup" username="Admin" password=""></sharedGroupAlias> </connections>
To set up a connection to an Individual Group, include the following:
Group Alias
A Group Alias is a saved connection that can be easily retrieved using the Client SDK and the Server API.
<individualGroupAlias name="ConnectionTwo" path="C:\DriveWorks\MyGroup.drivegroup" username="Admin" password="password" />
Where:
The Group Alias cannot include any of the following:
Change the value ConnectionTwo to the name to give to the group alias.
Change the value C:\DriveWorks\MyGroup.drivegroup to the path to the Individual Group file.
Change the value Admin to the Username to use by default.
Change the value password to the Password to use by default.
Because the Integration Theme is a request service the ability to list and edit all Constants, Variables and Macros has been blocked (for security reasons).
However there may be instances where access to certain Constants, Variables and Macros is required.
As such, you need to explicitly set what Constants, Variables and Macros are visible to what teams (and if they can edit them).
Permissions require to be included within the following element:
<connections> <sharedGroupAlias OR individualGroupAlias> --Taken from above-- <permissions> ---Copy the required xml below within these elements--- </permissions> </sharedGroupAlias OR /individualGroupAlias> </connections>
To set up permissions, include the following:
<project name="Project1"> <variable name="variable1"> <team name="Team1" /> </variable> <constant name="constant1"> <team name="Team2" canEdit="true"/> </constant> <macro name="macro1"> <team name="Team1"/> </macro> </project> <groupTable name="TableOne"> <team name="Team1" /> </groupTable>
Where:
Change the value Project1 to the name of the required project.
Change the value Variable1 to the name of the Variable.
<variable name="variable1"> <team name="Team1" /> </variable> <variable name="variable2"> <team name="Team1" /> </variable>
Change the value Team1 to the name of the team.
<team name="Team1" /> <team name="Team2" /> <team name="Team3" />
Change the value constant1 (and constant2 if declaring multiple Constants, as below) to the name of the Constant.
<constant name="constant1"> <team name="Team1" /> </constant> <constant name="constant2"> <team name="Team1" /> </constant>
Change the value Team1 to the name of the team.
Change the value of the canEdit attribute to true to allow the Constant to be edited by the user (applies to the Constant element only).
<team name="Team1" canEdit="true" /> <team name="Team2" canEdit="true" /> <team name="Team3" canEdit="true" />
Change the value macro1 (and macro2 if declaring multiple macros, as below) to the name of the Macro.
<macro name="macro1"> <team name="Team1" /> </macro> <macro name="macro2"> <team name="Team1" /> </macro>
Change the value TableOne and TableTwo to the name of the Group Table.
Change the value Team1 to the name of the Team with permission.
Group Table permissions are placed inside the permissions element and outside the project element.
Multiple Group Tables must be listed separately. For example:
<permissions> <project> ... </project> <groupTable name="TableOne"> <team name="Team1" /> </groupTable> <groupTable name="TableTwo"> <team name="Team1" /> </groupTable> </permissions>
Configuration Settings require to be included within the following element:
<configuration> ---Copy the required xml below within these elements--- </configuration>
Copy the xml from each required setting element below within these elements.
This is a list of Origins that are permitted to make Cross Origin Requests.
Origins are URLs of websites that you wish to allow a request to be made from.
<corsOrigins> <origin1>*</origin1> </corsOrigins>
By default this is set to * meaning all origins can make requests.
This should be changed to a single URL, for example:
<corsOrigins> <origin1>http://google.com</origin1> </corsOrigins>
To block all requests leave the value blank, for example:
<corsOrigins> <origin1></origin1> </corsOrigins>
To allow requests from multiple sources add additional origin elements, for example:
<corsOrigins> <origin1>http://google.com</origin1> <origin2>http://microsoft.com</origin2> <origin3>http://driveworks.co.uk</origin3> </corsOrigins>
To allow requests from all subdomains, for example:
<corsOrigins> <origin1>http://*.google.com</origin1> </corsOrigins>
The length of time in minutes that a session is allowed to remain inactive before it is timed out.
This defines how long to wait before timing out of a Session (It will cancel associated Groups and Specifications).
When a session ends the license will expire (be returned) a short time after.
Licenses can only return in whole minutes and not seconds.
Setting the SessionTimeout to 1.5 mins would end an inactive web session after 90 seconds, the live license would expire after 120 seconds.
To set your preferred timeout value, include the following:
<sessionTimeout>20</sessionTimeout>
Where 20 is changed to your preferred value.
Timeout Values
The sessionTimeout, specificationTimeout and groupTimeout values must all be different.
The length of time in minutes that a specification is allowed to remain inactive before it is timed out.
This defines how long to wait before timing out of a Specification.
This is per started Specification (you can start multiple specifications running within the same group within the same session.)
To set your preferred timeout value, include the following:
<specificationTimeout>10</specificationTimeout>
Where 10 is changed to your preferred value.
Timeout Values
The sessionTimeout, specificationTimeout and groupTimeout values must all be different.
The length of time in minutes that a Group is allowed to remain inactive before it is timed out.
This defines how long to wait before timing out of a Group (It will cancel associated Specifications).
This is per started Groups (you can connect to multiple groups within the same session).
To set your preferred timeout value, include the following:
<groupTimeout>15</groupTimeout>
Where 15 is changed to your preferred value.
Timeout Values
The sessionTimeout, specificationTimeout and groupTimeout values must all be different.
The directory from which additional static files are to be served.
The .html and .css files for the examples landing page are located here.
<staticFilesPath>C:\Files\StaticFiles</staticFilesPath>
We recommend static files be stored on a local (C:\) drive.
If a network location is required, this must be a UNC location and not a mapped network drive.
Set this to true if you want to enable the /help endpoint. This includes access to the server API and the Client SDK documentation.
It is recommended that this is set to false in a production environment.
To set your preferred value, include the following:
<serveDocumentation>true</serveDocumentation>
Where true is changed to your preferred value.
(Only required if using the Upload Control)
The maximum allowed request body size in bytes.
By default the value is 30,000,000 bytes (around 28mb); this can be changed as required to accommodate large file uploads if desired.
This line can be removed or commented out - by doing so, the limit will be disabled entirely (i.e. making the request body size unlimited)
To set your preferred value, include the following:
<maxRequestBodySize>30000000</maxRequestBodySize>
Where 30000000 is changed to your preferred value.
See Using a SSL Certificate below.
See Using a SSL Certificate below.
Force all resource URLs to be returned with the HTTPS scheme.
This is required to be set to True when a Project loads other resources, such as a 3D Preview or ProjectStyles.css, in the background.
It is also useful when using load balancing that terminates the SSL connection.
To set your preferred value, include the following:
<httpsForceSslOnResources>True</httpsForceSslOnResources>
Where True will force all resource URLs to be returned with the HTTPS scheme.
Set this to force all resource URLs to be returned with this fully qualified domain name (FQDN).
<fullyQualifiedDomainName>https://my-driveworks-site.com</fullyQualifiedDomainName>
Sets the limit for the length (in bytes) of each multipart form body.
It is recommended that this value be uncommented and increased from the default if you are encountering issues with file uploads (using the Upload Control).
To set your preferred value, include the following:
<multipartBodyLengthLimit>134217728</multipartBodyLengthLimit>
Where 134217728 is changed to your preferred value (in bytes).
Set this to true to allow public, content-based caching for all form resources (images, etc.).
WARNING: This means that a request for a resource will NOT be authenticated and possibly stored in edge servers on the internet.
Each URL is based on the content of the file alone, so this is typically not an issue.
<allowPublicFormResources>true</allowPublicFormResources>
The following is an example of a typical DriveWorksConfigUser.xml file, with specific settings included.
The settings that are not included will be taken from the DriveWorksConfig.xml file.
<configuration> <sessionTimeout>15</sessionTimeout> <specificationTimeout>10</specificationTimeout> <serveDocumentation>false</serveDocumentation> <maxRequestBodySize>30000000</maxRequestBodySize> <connections> <sharedGroupAlias name="DriveWorks" serverAddress="PROSERVER" groupName="MyGroup" username="Admin" password="" > <permissions> <project name="Canopy"> <variable name="Discount"> <team name="Sales" /> </variable> <constant name="DiscountApplied"> <team name="Sales" canEdit="true"/> </constant> </project> </permissions> </sharedGroupAlias> </connections> </configuration>
There are vital configuration options for serving DriveWorks Live over HTTPS and avoiding SameSite security issues in newer versions of common browsers.
In DriveWorks Live Settings ensure SSL (Advanced) is checked.
The DriveWorksConfigUser.xml file has the following commented code near the start of the file:
<!-- Uncomment and edit the following to configure an SSL certificate--> <!-- The file path to your exported SSL certificate --> <!--<httpsPfxFilePath></httpsPfxFilePath>--> <!-- The passphrase for your exported SSL Certificate --> <!--<httpsPfxPassphrase></httpsPfxPassphrase>-->
Uncomment the lines containing the httpsPfxFilePath and httpsPfxPassphrase.
Add the location of the SSL certificate (.pfx file) in between the httpsPfxFilePath tag.
Add the pass phrase the certificate has been set up to use in between the httpsPfxPassphrase tag.
The code should now look like the following:
<!-- Uncomment and edit the following to configure an SSL certificate--> <!-- The file path to your exported SSL certificate --> <httpsPfxFilePath>C:\DriveWorks\my-certificate.pfx</httpsPfxFilePath> <!-- The passphrase for your exported SSL Certificate --> <httpsPfxPassphrase>SecureExportedPassphrase</httpsPfxPassphrase>
See also
How To: Configure DriveWorks Live For IIS
How To: Make Your Website React To Specification Events With The Integration Theme