## 5 ASL2 Genio Transformation  
The ASL2 Genio transformation is another extension to ASL (namely, to ASL's code generator), which makes it available in any software tool offered within the ITLingo ecosystem that supports ASL specifications. For Eclipse-based development environments (ITLingo-Studio) [41], the artefacts are continuously generated as the user changes the source specification file. These artefacts are available locally in the user's Eclipse workspace. Complementary and for Web/Cloud-based editors (ITLingo-Cloud), the user may click a generation button to start this task when needed. In that case, the server generates the artefacts and packages them as a zip file so the user can download and use them later in the scope of the \"Import Genio Project\" task.  
Since Genio's import and export mechanism is designed to represent Genio projects in XML format and with a specific directory structure, the proposed generator must meet these requirements. For instance, some concepts, such as data enumerations, must be generated within the same XML file, while others, such as data entities, are expected to be placed in separate files (one file per data entity). Table 1 overviews the expected file and folder structure of the generated artefacts.  
As mentioned above, the ASL2 Genio transformation extends to ASL's code generator. This code generator is built using the Xtend framework [42] and handles the initial parsing of an ASL specification file. Then, based on the requested target platform (currently, the Genio platform), the generator instantiates the appropriate extension.  
Figure 11 shows the involved tasks to transform an ASL specification into a Genio project, including the ASL2 Genio transformation and the creation of the Genio project using the generated XML files.  
As discussed in Section 1, this research focuses on designing and implementing the ASL2 Genio transformation. Spec. 6 shows the pseudo-code of the generate method of ASL's Genio extension, which was implemented based on the aspects discussed in Section 3 and according to the structure outlined in Table 1.  
\begin{table}
\begin{tabular}{c c c c} \hline
**ASL Element** & **Genio Element** & **Folder** & **File Name (xml)** \\ \hline DataEntities & Tables & GENTABEL & [Data entity name] \\ UIComponent & Forms & GENFORMS & [Form name] \\ UIComponent & Menus & GENMENUS & [Menu name] \\ - & Modules & GENMODUL & [Module name] \\ DataEnumerations & Enumerations & - & GENARRS \\ Actors + UseCases & Access levels & - & GENNIVAC \\ \hline \end{tabular}
\end{table}
Table 1: Overview of the structure of Genio XML files.  
Figure 11: Proposed approach: Combining ASL with the Genio platform (BPMN notation).  
```
1 defvoidgenerate(){
2//CreatenewGenioproject
3 this.createNewProject()
4
5//NormalisesidentifierstoaccommodateGenioconstraints
6 this.normalizeIdentifiers()
7
8//Generatedataenumerations(target:GENARRS.xml)
9 fileSystem.generateFile(\"/GENARRS.xml\",this.getEnumerations().compile())
10
11//Generateaccesslevels(NIVACandNIVMO)(target:GENNIVAC.xml)
12 fileSystem.generateFile(\"/GENNIVAC.xml\",this.getAccessLevels().compile())
13
14//Generatedatentities(target:GENTABEL/*.xml)
15 for(tabel:this.getTables()){
16 fileSystem.generateFile(\"/GENTABEL/\"+table.name+\".xml\",table.compile())
17}
18
19//Generateforms(target:GENFORMS/*.xml)
20 for(form:this.getForms()){
21 fileSystem.generateFile(\"/GENFORMS/\"+form.name+\".xml\",form.compile())
22}
23
24//Generatedefaultmodule(target:GENMODUL/*.xml)
25 varmodule=this.getDefaultModule()
26 fileSystem.generateFile(\"/GENMODUL/\"+module.Codiprog+\".xml\",module.compile())
27
28//Generatemenuentries(target:GENTENU/*.xml)
29 for(menu:this.getMenus()){
30 fileSystem.generateFile(\"/GENTENUS/\"+menu.name+\".xml\",menu.compile())
31}
32}
```  
**Spec. 6.** Pseudo-code of the generate method of ASL's Genio extension.