OneConfiguration

The documentation on the new OneConfiguration system is a little bit lean so I went through the msconfig.cfg (from MicroStation Update 16 and OpenRoadsDesigner 10.10) to see how it worked. All the variables made my eyes glaze over so I needed a solid example of what was going on. Thought i'd post this here to see if I screwed up somewhere or maybe it'll help others.

I used the existing MicroStation Update 16 MetroStation example workspace/workset as a basis, then picked a one_group_name and a one_subgroup_name, then followed through where config files would load from.

My example is based on OpenRoads Designer. OpenRoads Designer has components of its workspace that need to be used with specific version of ORD. These components (I think they're all dgnlibs, but could be wrong) are tied to the schema used by that version of OpenRoads. In our particular workspaces we occasionally need to support both older versions of this schema and current versions. Which version each of our projects uses is usually not our call, but our client's call so we can't say we'll be moving everything to one version across the company in lock step.

OpenRoads currently does not have a variable defining the schema version so the one in my example is made up (i'll add some config stuff later that shows how you could set it).

# Assuming variables are set as follows:
_USTN_WORKSPACENAME = Example
_USTN_WORKSETNAME   = MetroStation

_USTN_PRODUCT_ONE_GROUPNAME     = $(_ENGINENAME)
_USTN_PRODUCT_ONE_SUBGROUPNAME  = "Schema10_10" # or Schema10_11 for example

# If loaded using OpenRoads Designer, config files would be loaded from the following locations:
Configuration\ConfigurationSetup.cfg
Configuration\WorkSpaceSetup.cfg
Configuration\WorkSpaceSetup_OpenRoadsDesigner.cfg

Configuration\Organization\*.cfg
Configuration\Organization\OpenRoadsDesigner\*.cfg
Configuration\Organization\OpenRoadsDesigner\Schema10_10\*.cfg

Configuration\WorkSpaces\Example.cfg
Configuration\WorkSpaces\Example\*.cfg
Configuration\WorkSpaces\Example\Standards\*.cfg
Configuration\WorkSpaces\Example\Standards\OpenRoadsDesigner\*.cfg
Configuration\WorkSpaces\Example\Standards\OpenRoadsDesigner\Schema10_10\*.cfg

Configuration\WorkSpaces\Example\WorkSets\MetroStation.cfg
Configuration\WorkSpaces\Example\WorkSets\MetroStation\Standards\*.cfg
Configuration\WorkSpaces\Example\WorkSets\MetroStation\Standards\OpenRoadsDesigner\*.cfg
Configuration\WorkSpaces\Example\WorkSets\MetroStation\Standards\OpenRoadsDesigner\Schema10_10\*.cfg

So, for example, for the Organization level I can put all the resources used by all products (fonts, some cells & line styles,  common levels, etc..) in folders under Organization, and resources common to all vesions of OpenRoadsDesigners (specific road fonts maybe or additional levels) in folders under OpenRoadsDesigner and dgnlibs specific to the 10.10 ORD schema in OpenRoadsDesigner\Schema10_10

Now when a new schema is introduced we just need to take the resources that are schema specific, upgrade them, add whatever new things we want, and put them in a Schema10_11 folder. We don't have to touch any of the resources that aren't schema specific.

Couple of additional notes:

  • NONE of this is mandatory. You can ignore it all and keep going with how your current configuration is laid out.
  • Bentley has a variable _USTN_CONFIGURATIONSETS where the comment seems to imply it's part of OneConfiguration ("Configuration Sets are configurations that are shared across WorkSpaces.") however the variable is never used after being defined (at least not in msconfig.cfg), the ConfigurationSets folder installed with MicroStation U16 and ORD 10.10 is empty. I assume this is a variable for your use, but I'm not sure if it's intended to be used with OneConfiguration or is something else.
  • I'm not sure how flexible the GroupName and SubGroupName are, I haven't tested but I think you can define them at level (say the organization) at it'll apply from that level on. Same for WorkSpace and WorkSet levels (however if you define the variable at the WorkSet level, you can't use it at the WorkSpace level).
    • You can probably override the names at each level, so different group name at the workspace level than the organization level, but this would be insanity.
    • I get the feeling that group & subgroups are really intended to be based on things about the products (like which product and something version specific about the product) and not things about the user like a Role or Discipline or completely different workspaces like client 1 and client 2. This is mostly based on the fact that there is no UI for picking these names like there is for WorkSpace, WorkSet (and sometimes Role).

# Last bit of code. Here is one way to create your own Schema variable:
%if $(_USTN_PRODUCT_FULLMARKETINGNAME) == "OpenRoads Designer CE - 2021 Release 1"
	_USTN_PRODUCT_ONE_SUBGROUPNAME = "Schema10_10"
%elif $(_USTN_PRODUCT_FULLMARKETINGNAME) == "OpenRoads Designer CE - 202X Release Something"
	_USTN_PRODUCT_ONE_SUBGROUPNAME = "Schema10_11"
%endif

# Another way, since the ConfigurationSetup.cfg file is still product specific is
# just put the variable in the ConfigurationSetup.cfg for that product.

Parents Reply Children
No Data