Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hey everyone!
I recently deployed an app into the QDF and created a three layered Dev-Test-Prod environment for it. Upon making some adjustments to the Development app, I copied it to the two other locations. When I did so, all paths (vG.*) were correctly changed except the Shared paths, which remained with its reference to the Development folder.
As shown in the variable overview within the Production app, for instance:
...\1.Production\3000.Reports\1.Reports\
...3.Development\99.shared_folders\
I thought the inclusion of the InitLink.qvs file was supposed to make sure that this did not happen. Now I must call the LCGV subroutine in the Test and Production locations in order to correctly name all the Shared paths.
Has this happened to any of you? Any ideas why it might happen?
By the way, I'm using QlikView, as some might have guessed already.
Thanks in advance.
The latest release (1.7.1) of QDF has fixed this issue to a certain extent. The following is written in the "What's new?" statement:
"Fixed Shared Global Variable cache behavior, vG.BasePath is now controlling cache validation alone".
This means that only vG.BasePath needs to be cleared prior to initiation.
if you clear the QDF cache is the issue resolved? I have highlighted the important lines.
set vL.ClearCache = 0;
set vL.ClearCache = 1;
if (vL.ClearCache=1) then
set vG.BasePath = ;
set vG.SharedBasePath =;
endif;
Yes, it does resolve the issue, such that all Shared paths are correctly referring to the locations. However, the code above of course leaves the two important variables BasePath and ShareBasedPath empty. In the script I have put the above after the QDF initiation. Should it instead be preceding it? How do you suggest I fix this robustly?
This code ensures that the cache is re-initialised. Those variables should have a value when the script has run. You can always set these to null. This means that the script will be a little slower to execute.
I'm not quite following. Should the cache be re-initialised on every run, or should I just do this once? My apologies for being rather slow on this topic.
I don't think it really matters. Others can chime in here. It needs to run once when you move environments like you have done. Otherwise you don't need to reinitialise it. The cache speeds up processing time. I often put this code snippet in a include file so I don't need to republish apps etc. Just update the file on disk.
I made a .qvs of the snippet and included it in one of the apps. After one reload, I commented the script line and reloaded the app again; this time all path variables were correctly named.
I guess this is a workaround to the problem, but I believe there ought to be an explanation to why the InitLink.qvs doesn't take care of it in the first place.
The latest release (1.7.1) of QDF has fixed this issue to a certain extent. The following is written in the "What's new?" statement:
"Fixed Shared Global Variable cache behavior, vG.BasePath is now controlling cache validation alone".
This means that only vG.BasePath needs to be cleared prior to initiation.
Just as Drilon sais, from 1.7.1 the cache should work as expected (even for shared folders) and be reset as soon as you move an app between environments/folders. Regards Magnus