ABSTRACT
Due to large volumes of data from Cloud Computing and from the Internet of Things, the companies’ software ecosystem requires an efficient integration of applications and services. Performance improvement from integration platforms’ runtime systems is directly related to task scheduling strategies from integration processes. It is still a challenge to find the proper heuristic for a given integration process subject to high inbound data rates. This article proposes a simulation tool for the field of Enterprise Application Integration, which implements different scheduling heuristics and allows the extraction of performance metrics. Three task scheduling heuristics were simulated during the integration process, and the results were evaluated through statistical tests.
Acknowledgments
This work was supported by the Coordination for the Improvement of Higher Education Personnel (CAPES), under grant numbers 88881.119518/2016-01 and 88881.136207/2017-01; the Research Support Foundation of the State of Rio Grande do Sul (FAPERGS) under grant number 17/2551-0001206-2; and, the National Council for Scientific and Technological (CNPq) under grant number 309315/2020-4. We would like to thank Dra. Maria do Rosário Laureano and Dr. Sancho M. Oliveira from the Instituto Universitário de Lisboa (ISCTE-IUL) ISTAR-IUL, Lisboa, Portugal and Dra. Iryna Yevseyeva from the De Montfort University, United Kingdom, for their helpful comments in earlier versions of this article.
Disclosure statement
No potential conflict of interest was reported by the author(s).
A.1. Profiles of integration processes
A.1.1. Processing Order (IP1)
• Identification of the integration process tasks:
VectorIdTask = {1,2,3,4,5,6,4,8,9,10,11,12,13,14,15,16,17};
• Identification of the next task of each task of the integration process:
VetorNextTask = {{2}, {3}, {4,12,17}, {5,7}, {6}, {7}, {8}, {9}, {10}, {11}, {}, {13,15}, {14}, {15}, {16}, {9}, {}};
• Identification of the execution time range of each task of the integration process:
VetorTimeExec = {{1,2}, {2,3}, {2,3}, {2,3}, {1,2}, {1,2}, {3,4}, {1,2}, {3,4}, {1,2}, {1,2}, {2,3}, {1,2}, {1,2}, {3,4}, {1,2}, {1,2}};
• Identification of the logic operation type of each task of the integration process:
VetorOper= {{}, {}, {or}, {and}, {}, {}, {}, {}, {}, {}, {}, {and}, {}, {}, {}, {}, {}};
• Identification of the parallel tasks of the integration process:
VetorParallelTask = {0,0,0,0,0,0,0,0,0,0,0,4,5,6,7,8,4};
• Identification of the last tasks of the integration process:
LastTask = {11,17}.
A.1.2. Huelva’s County Council (IP2)
• Identification of the integration process tasks:
VectorIdTask = {1,2,3,4,5,6,4,8,9,10,11,12,13,14,15,16,17,18,19};
• Identification of the next task of each task of the integration process:
VetorNextTask = {{3}, {3}, {4}, {5,7}, {6}, {7}, {8}, {9}, {10,18}, {11}, {12,14}, {13}, {14}, {15}, {16}, {17}, {}, {19}, {}};
• Identification of the execution time range of each task of the integration process:
VetorTimeExec = {{1,2}, {1,2}, {3,4}, {2,3}, {1,2}, {1,2}, {3,4}, {1,2}, {2,3}, {1,2}, {2,3}, {1,2}, {1,2}, {3,4}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}};
• Identification of the logic operation type of each task of the integration process:
VetorOper= {{}, {}, {}, {and}, {}, {}, {}, {}, {or}, {}, {and}, {}, {}, {}, {}, {}, {}, {}, {}};
• Identification of the parallel tasks of the integration process:
VetorParallelTask = {0,1,0,0,0,0,5,0,0,0,0,0,0,12,0,0,0,16,17};
• Identification of the last tasks of the integration process:
LastTask = {17,19}.
A.1.3. Real Estate (IP3)
• Identification of the integration process tasks:
VectorIdTask = {1,2,3,4,5,6,4,8,9,10,11,12,13,14,15,16,17};
• Identification of the next task of each task of the integration process:
VetorNextTask = {{5}, {5}, {4}, {5}, {6}, {7,8}, {8}, {9}, {10,11}, {11}, {12}, {13,16}, {14}, {15}, {}, {17}, {}};
• Identification of the execution time range of each task of the integration process:
VetorTimeExec = {{1,2}, {1,2}, {1,2}, {1,2}, {3,4}, {2,3}, {1,2}, {3,4}, {2,3}, {1,2}, {3,4}, {2,3}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}};
• Identification of the logic operation type of each task of the integration process:
VetorOper= {{}, {}, {}, {}, {}, {and}, {}, {}, {and}, {}, {}, {or}, {}, {}, {}, {}, {}};
• Identification of the parallel tasks of the integration process:
VetorParallelTask = {0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,13,14};
• Identification of the last tasks of the integration process:
LastTask = {15,17}.