ManagedTagProvider value binding

I have been using the ManagedTagProvider to setup simulation UDTs. The UDTs generally have a “run” tag, input tags, output tags, and config tags. When the user toggles the run tag on a UDT instance, my module executes simulation logic on a timer and updates the output tags.

I’m very happy with how easy it was to implement using ManagedTagProvider, and that it takes care of persistence for all the instance tags and values. My only problem is that the user can’t setup binding on the value property for any of the tags. The user needs the ability to bind tag values to other data sources available in Ignition, and other simulation instances.

providerConfiguration.setAllowTagCustomization(true) does not seem to apply to the value category.

Is there a way to enable value binding without needing to implement a custom tag provider?

ManagedTagProvider’s only provide what are equivalent to Memory Tags.

So, if I understand your question, yes you would need some kind of full custom tag provider to let your users create or configure Expression Tags inside it, which is what it sounds like you want.

But why don’t they just create the Expression Tags they need outside your provider?

Thanks for the response Kevin. An example might have the following instances created from module defined UDTs:

PumpSimInstance
-speedCommand
-configStartDelay
-conifgB
-configC
-outputFlow

TankSimInstance
-inputFlow1
-inputFlow2
-configInputDelay
-outputLevel

Then I’d like to bind TankSimInstance.inputFlow1 to PumpSimInstance.outputFlow.

So an external tag would need to be bound to both tags somehow to glue them together, which I’m not sure is possible. Do you see any other ways of accomplishing what I’m trying to do?

If you’re okay hooking this up manually via code in your module then after you’ve created all your tags you can get the TagManager and subscribe to tags you want to “bind” to using subscribeAsync and when that tag’s value changes set the value on the target tags.

I don’t see any solution for letting users manually/dynamically configure these “bindings” though.

10-4, thanks. I will look into implementing a custom tag provider. If anyone has implemented a custom provider and would be interested in consulting on this (or sharing), please reach out!

Hello Keven (or anyone else who sees this), I’m trying to do something similar and need help with the approach.

I want to drag & drop a UDT tag onto my component and can do this with a tag drop handler. In my BeanInfo class the only thing I know to do is to bind some TagProp's to some properties in my client component class. Where do I go from there? I looked at the TagManager and subcribeAsync, the method requires a TagPath argument. The BasicTagPath class (implements TagPath) constructor calls for a source string BasicTagPath​(java.lang.String source). Do I bind my dropped UDT tag TagProp.SourceTagPath to String property in my client class and use that as the TagPath argument in the subsribeAsync method?

I’m really struggling with this :thinking:

Thanking you in advance.
Regards,
Ted.