Mark Herrmann Posted June 25, 2018 Share Posted June 25, 2018 Hi, I've seen many posts on how to trigger a data function after refresh of a data table is completed and made extensive use of that. But now I need to trigger a TERRdata function"GaussConvolution"and once it has copmleted (output is data table "Writing_Density_Data") I'd like to refresh data table "star_kpi_Writing_Density" (which uses data from various tables incl."Writing_Desnity_Data" and is set to manual update for performance reasons). I do have an IronPython script which triggers the refresh of data table "star_kpi_Writing_Density" and is called "RefreshStarKpiWritingDensity". I was trying to modify a script I got from the community and which is originally designed to trigger a script after a data table refresh but it reliably crashes SPOTFIRE 7.11 so I guess something is pretty wrong in my script. Any hints would be highly appreciated... import clr from System.Collections.Generic import List, Dictionary from Spotfire.Dxp.Data import DataTable from System.Collections import ArrayList from Spotfire.Dxp.Application.Scripting import ScriptDefinition from Spotfire.Dxp.Framework.ApplicationModel import NotificationService # Notification service notify = Application.GetService[NotificationService]() # Get second script to be executed after CD-Map data download is finished scriptDef = clr.Reference[scriptDefinition]() Document.ScriptManager.TryGetScript("RefreshStarKpiWritingDensity", scriptDef) params = Dictionary[str, object]() # Refresh Callback function def execCallBack(exception, Document=Document, notify=notify, params=params, scriptDef=scriptDef): if not exception: # executes the script Document.ScriptManager.ExecuteScript(scriptDef.ScriptCode, params) else: notify.AddErrorNotification("Error refreshing star_kpi_Writing_Density data table","Error details",str(exception)) from Spotfire.Dxp.Data.DataFunctions import DataFunctionExecutorService, DataFunctionInvocation, DataFunctionInvocationBuilder dataManager = Document.Data app = Application dataFunction = None for function in dataManager.DataFunctions: if function.Name == 'GaussConvolution': dataFunction = function dataFunction.Execute(execCallBack) Thanks, Mark Link to comment Share on other sites More sharing options...
Shandilya Peddi Posted June 25, 2018 Share Posted June 25, 2018 Hello Mark, In the callback function argumentscan you also declare string as well and test it. Below would be the change def execCallBack(exception, Document=Document, notify=notify, params=params, scriptDef=scriptDef,str=str): Link to comment Share on other sites More sharing options...
Mark Herrmann Posted June 26, 2018 Author Share Posted June 26, 2018 Hello Shandilya, thanks for the quick response but SPOTFIRE still crashes. I found another workaround by simply refreshing the output data table of TERR data function "GaussConvolution" and then refreshing the 2nd data table I do not need to trigger the data function explicitly (this happens automatically when refreshing its output data table). So problem solved. Thanks Mark Link to comment Share on other sites More sharing options...
Ryan Hartquist 2 Posted December 6, 2019 Share Posted December 6, 2019 Has anyone found a resolution to this This method crashed for me as well. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now