Forum Discussion
rhankey
3 years agoContributor III
Referencing a custom structure from a referenced assembly
I am trying to figure out how to share a structure between OS BR files.
In an Extender BR file named ExtenderBR I have:
Public Structure MyStruct
Public Element1 As String
Public Element2 ...
- 3 years ago
It's just a namespacing issue. My code above worked because the type was not declared at compilation time, so typing information would only be (successfully) looked up at runtime; but yours wants types available at compilation time, so you have to import the namespace at the top:
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
That should solve your compilation issues.
(For the record, you don't need to mark "Contains Global Functions for Formulas" to go cross-rule, that option is just if you plan to actually reference it from the Member Formula properties on dimension members, something that typically only Finance rules concern themselves with.)
rhankey
3 years agoContributor III
I apologize if there were typos, or it appears I cut some corners in attempting to demonstrate the issue. Below, I will show screen shots using the same hypothetical example.
Here is a screenshot of the relevant portion of the ExtenderBR that is to contain the common Structure & Function:
And since you mentioned it might be an issue with using an Extender for the common Structure/Function, here's a screen shot of the same structure/functions replicated into a Finance Rule file too:
And here is its properties tab showing that it has been tagged with having global functions:
And now we move on to the Finance rule where I want to use the common structure and function. In this rules file, I have included calls to both the common Extender and the common Finance rule file to kill two birds with one stone. I have placed comments on lines 28:36 indicating the compiler issues I receive:
And here is the properties tab:
As I hope to have demonstrated above, there are no issues referencing the Public functions (and simple variables) defined in other BR files. I do this sort of stuff a lot with no issue. But I cannot reference custom structures defined in other BR files.
Any ideas how I can access a custom structure that I have defined in another BR file?
JackLacava
OneStream Employee
3 years agoIt's just a namespacing issue. My code above worked because the type was not declared at compilation time, so typing information would only be (successfully) looked up at runtime; but yours wants types available at compilation time, so you have to import the namespace at the top:
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
That should solve your compilation issues.
(For the record, you don't need to mark "Contains Global Functions for Formulas" to go cross-rule, that option is just if you plan to actually reference it from the Member Formula properties on dimension members, something that typically only Finance rules concern themselves with.)
- rhankey3 years agoContributor III
I can confirm either of the following did resolve the issue.
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
or
Imports OneStream.BusinessRule.Finance.FinanceCommonBR.MainClass
Thanks for the pointer.