6 Replies Latest reply: Aug 17, 2016 2:14 PM by Magnus Berg RSS

    How does QDF work with version control?

    Adam Barrie-Smith

      There is another discussion on this but it didn't answer my question. I'd like to know how to work QDF while needing to use Team Foundation Server?  Do you check in/out from within QV Local Client but then checkin the framework folders separately?

        • Re: How does QDF work with version control?
          Magnus Berg

          Hi Adam, you are perfectly right. Development done inside the application is version handled the built in way, read Version and Source Control Managment with QlikView for more info. Scriptlets created using the framework structure (vG.SubPath, vG.CustomPath) could be version handled using the external editor, for example Notepad++ and Sublime have TFS plugins. Vadim Tsushko have also created a QlikView language Plugin for Sublime QlikView language plugin for Sublime Text Editor.

          Hope that this helps

          Best Regards

          Magnus

          • Re: How does QDF work with version control?
            Vadim Tsushko

            We use yet another, slightly differrent approach.

             

            We have a qlikview application which serves as a template for all QVD generators and ETL modules across the project.

            Script in that application is identical for all ETL modules: something like this:

             

            let vG.BasePath=;
            // Basic search for 1.Init.qvs
            $(Include=..\..\..\..\3.include\1.basevariable\1.init.qvs);
            $(Include=..\..\..\3.include\1.basevariable\1.init.qvs);
            $(Include=..\..\3.include\1.basevariable\1.init.qvs);
            $(Include=..\3.include\1.basevariable\1.init.qvs);
            Exit script when '$(vG.BasePath)'= '';
            
            
            $(must_include=$(vG.SubPath)\RunApp.qvs);
            CALL RunApp;
            

             

            So basically it is QDF bootsrap code following by call of RunApp procedure

             

            RunApp procedure looks up for script with name corresponding to name of QlikView document in vG.CustomPath directory, and includes that script. RunApp procedure looks something like that:

             

            // Include and load QVS script corresponding to QVW file
            SUB RunApp
              LET include_file = '$(vG.CustomPath)' & Upper(replace(DocumentName(), '.qvw', '.qvs'));
              $(must_include=$(include_file));
              LET include_file=;
            END SUB
            

            To add new QVD Generator to Transformation container, I copy template application to vG.ApplicationPath of Transformation container with new name (for example InventTable.qvw), then create script InventTable.qvs in vG.CustomPath directory.

            From there on all interesting stuff (real scripting) would be done in that script within Sublime Text.

            So we have many self-contained, separately developed and tested modules. Binary QlikView part of any module is virtually disposable - we can simply copy over it from template at any time. Their text script parts are under strict control by CVS (we are using Git but I believe that is irrelevant)