Abstract: The disclosure relates to method and system for grouping functional elements across applications. The method includes identifying a plurality of application flows associated with each application of a plurality of applications and determining one or more pairs of related application flows. Each pair may include application flows associated with different applications. The method may further include identifying from each application flow of each pair of application flows, one or more related methods and identifying from each related method, one or more related functional blocks. Each related method may be related to the other application flow of the pair of application flows, and each related functional block may be related to the other application flow of the pair of application flows. The method may further include generating a functional flow by grouping the one or more related methods and the one or more related functional blocks.
This disclosure relates generally to data clustering, and more particularly to method and system for grouping functional elements across applications.
Background
[002] With the new and emerging technologies, clustering of a complex legacy distributed application with various technology stacks to thereby transform into a manageable sub-system is a high requirement. There exist various techniques to trace a functional flow through tracing a call-stack and identifying the related methods available in a call flow.
[003] However, the existing techniques may have several limitations such as, but not limited to, being untraceable beyond the application boundaries, being untraceable due to the application architecture (like usage of intermediary message buses or queues), and wrong traceability due to structured programming concept adoptions. The related functionalities can have entirely different traces and entirely different functionalities may have similar traces.
[004] Therefore, there is a need for improved methods and systems for grouping the data elements related to a business functionality, even when the functional data elements are distributed across boundaries and are hidden inside application architecture and coding pattern.
SUMMARY
[005] In an embodiment, a method for grouping functional elements across applications is disclosed. In one example, the method may include identifying a plurality of application flows associated with each application of a plurality of applications. Each of the plurality of applications may include at least one method, and each of the at least one method includes at least one functional block. The method may further include determining one or more pairs of related application flows. Each pair of the one or more pairs may include application flows associated with different applications. The method may further include identifying from each application flow of each pair of application flows, one or more related methods, each related method related to the other application flow of the pair of application flows. The method may further include identifying from each related method, one or more related functional blocks, each related functional block related to the other application flow of the pair of application flows. The method may further include generating a functional flow by grouping the one or more related methods and the one or more related functional blocks.
[006] In another embodiment, a system for grouping functional elements across applications is disclosed. In one example, the system may include a processor and a memory communicatively coupled to the processor, wherein the memory stores processor-executable instructions, which, on execution, may cause the processor to identify a plurality of application flows associated with each application of a plurality of applications. Each of the plurality of applications may include at least one method, and each of the at least one method includes at least one functional block. The processor-executable instructions, on execution, may further cause the processor to determine one or more pairs of related application flows. Each pair of the one or more pairs may include application flows associated with different applications. The processor-executable instructions, on execution, may further cause the processor to identify from each application flow of each pair of application flows, one or more related methods, each related method related to the other application flow of the pair of application flows. The processor-executable instructions, on execution, may further cause the processor to identify from each related method, one or more related functional blocks, each related functional block related to the other application flow of the pair of application flows. The processor-executable instructions, on execution, may further cause the processor to generate a functional flow by grouping the one or more related methods and the one or more related functional blocks.
[007] In another embodiment, a non-transitory computer-readable medium storing computer-executable instructions for grouping functional elements across applications is disclosed. The non-transitory computer-readable medium may be configured for identifying a plurality of application flows associated with each application of a plurality of applications. Each of the plurality of applications may include at least one method, and each of the at least one method includes at least one functional block. The non-transitory computer-readable medium may be further configured for determining one or more pairs of related application flows. Each pair of the one or more pairs may include application flows associated with different applications. The non-transitory computer-readable medium may be further configured for identifying from each application flow of each pair of application flows, one or more related methods, each related method being related to the other application flow of the pair of application flows. The non-transitory computer-readable medium may be further configured for identifying from each related method, one or more related functional blocks, each related functional block related to the other application flow of the pair of application flows, and generating a functional flow by grouping the one or more related methods and the one or more related functional blocks.
[008] It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
[009] The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate exemplary embodiments and, together with the description, serve to explain the disclosed principles.
[010] FIG. 1 illustrates a block diagram of an exemplary computer system for grouping functional elements across applications, in accordance with some embodiments of the present disclosure;
[011] FIG. 2 illustrates a block diagram of a data structure of a plurality of applications, in accordance with some embodiments of the present disclosure;
[012] FIGs. 3A-3B illustrate schematic representations of two business functional flows, respectively, in accordance with some embodiments of the present disclosure;
[013] FIG. 4 illustrates a block diagram of a multi-tiered distributed application including two exemplary subsystems, in accordance with some embodiments of the present disclosure;
[014] FIG. 5 illustrates an exemplary Table depicting relationship index between application flows corresponding to two subsystems, in accordance with some embodiments;
[015] FIG. 6 illustrates a block diagram of an exemplary multi-tiered distributed application, in accordance with some embodiments of the present disclosure;
[016] FIG. 7 illustrates an exemplary block diagram of a functional block with data inflow and data outflow, in accordance with some embodiments of the present disclosure;
[017] FIG. 8A illustrates an exemplary Table depicting consolidated relationship matrix for various flows, in accordance with some embodiments of the present disclosure;
[018] FIG. 8B illustrates an exemplary Table depicting consolidated relationship matrix between methods of a flow (AL1FL3) with related groups, in accordance with some embodiments of the present disclosure;
[019] FIG. 8C illustrates a block diagram of a method (A1FL3-A1M3), in accordance with some exemplary embodiments of the present disclosure;
[020] FIG. 8D illustrates an exemplary Table depicting relationship matrices of relationship between each of the functional blocks of a related method of one flow with the remaining flows, in accordance with some embodiments of the present disclosure;
[021] FIG. 9 illustrates a block diagram of an exemplary business functional flow, in accordance with some embodiments of the present disclosure;
[022] FIG. 10 illustrates a flowchart of a method for grouping functional elements across a plurality of applications is illustrated, in accordance with some embodiments of the present disclosure;
[023] FIG. 11 illustrates a flowchart of an exemplary method of determining the one or more pairs of related application flows, corresponding to the method of FIG. 10, in accordance with an embodiment of the present disclosure;
[024] FIG. 12 illustrates a flowchart of an exemplary method of determining the one or more pairs of related application flows, corresponding to the method of FIG. 10, in accordance with another embodiment of the present disclosure;
[025] FIG. 13 illustrates a flowchart of an exemplary method of determining the one or more pairs of related application flows, corresponding to the method of the FIG. 10, in accordance with yet another embodiment of the present disclosure; and
[026] FIG. 14 illustrates a flowchart of an exemplary method of determining the one or more pairs of related application flows, corresponding to the method of FIG. 10, in accordance with yet another embodiment of the present disclosure.
DETAILED DESCRIPTION
[027] Exemplary embodiments are described with reference to the accompanying drawings. Wherever convenient, the same reference numbers are used throughout the drawings to refer to the same or like parts. While examples and features of disclosed principles are described herein, modifications, adaptations, and other implementations are possible without departing from the spirit and scope of the disclosed embodiments. It is intended that the following detailed description be considered as exemplary only, with the true scope and spirit being indicated by the following claims. Additional illustrative embodiments are listed below.
[028] Referring now to FIG. 1, an exemplary computing system 100 that may be employed to implement processing functionality for various embodiments (e.g., as a SIMD device, client device, server device, one or more processors, or the like) is illustrated. Those skilled in the relevant art will also recognize how to implement the invention using other computer systems or architectures. The computing system 100 may represent, for example, a user device such as a desktop, a laptop, a mobile phone, personal entertainment device, DVR, and so on, or any other type of special or general-purpose computing device as may be desirable or appropriate for a given application or environment. The computing system 100 may include one or more processors, such as a processor 102 that may be implemented using a general or special purpose processing engine such as, for example, a microprocessor, microcontroller or other control logic. In this example, the processor 102 is connected to a bus 104 or other communication media. In some embodiments, the processor 102 may be an Artificial Intelligence (AI) processor, which may be implemented as a Tensor Processing Unit (TPU), or a graphical processor unit, or a custom programmable solution Field-Programmable Gate Array (FPGA).
[029] The computing system 100 may also include a memory 106 (main memory), for example, Random Access Memory (RAM) or other dynamic memory, for storing information and instructions to be executed by the processor 102. The memory 106 also may be used for storing temporary variables or other intermediate information during the execution of instructions to be executed by processor 102. The computing system 100 may likewise include a read-only memory (“ROM”) or other static storage device coupled to bus 104 for storing static information and instructions for the processor 102.
[030] The computing system 100 may also include storage devices 108, which may include, for example, a media drive 110 and a removable storage interface. The media drive 110 may include a drive or other mechanism to support fixed or removable storage media, such as a hard disk drive, a floppy disk drive, a magnetic tape drive, an SD card port, a USB port, a micro-USB, an optical disk drive, a CD or DVD drive (R or RW), or other removable or fixed media drive. A storage media 112 may include, for example, a hard disk, magnetic tape, flash drive, or other fixed or removable media that is read by and written to by the media drive 110. As these examples illustrate, the storage media 112 may include a computer-readable storage medium having stored therein particular computer software or data.
[031] In alternative embodiments, the storage devices 108 may include other similar instrumentalities for allowing computer programs or other instructions or data to be loaded into the computing system 100. Such instrumentalities may include, for example, a removable storage unit 114 and a storage unit interface 116, such as a program cartridge and cartridge interface, a removable memory (for example, a flash memory or other removable memory module) and memory slot, and other removable storage units and interfaces that allow software and data to be transferred from the removable storage unit 114 to the computing system 100.
[032] The computing system 100 may also include a communications interface 118. The communications interface 118 may be used to allow software and data to be transferred between the computing system 100 and external devices. Examples of the communications interface 118 may include a network interface (such as an Ethernet or other NIC card), a communications port (such as for example, a USB port, a micro-USB port), Near field Communication (NFC), etc. Software and data transferred via the communications interface 118 are in the form of signals which may be electronic, electromagnetic, optical, or other signals capable of being received by the communications interface 118. These signals are provided to the communications interface 118 via a channel 120. The channel 120 may carry signals and may be implemented using a wireless medium, wire or cable, fiber optics, or other communications medium. Some examples of the channel 120 may include a phone line, a cellular phone link, an RF link, a Bluetooth link, a network interface, a local or wide area network, and other communications channels.
[033] The computing system 100 may further include Input/Output (I/O) devices 122. Examples may include, but are not limited to a display, keypad, microphone, audio speakers, vibrating motor, LED lights, etc. The I/O devices 122 may receive input from a user and also display an output of the computation performed by the processor 102. In this document, the terms “computer program product” and “computer-readable medium” may be used generally to refer to media such as, for example, the memory 106, the storage devices 108, the removable storage unit 114, or signal(s) on the channel 120. These and other forms of computer-readable media may be involved in providing one or more sequences of one or more instructions to the processor 102 for execution. Such instructions, generally referred to as “computer program code” (which may be grouped in the form of computer programs or other groupings), when executed, enable the computing system 100 to perform features or functions of embodiments of the present invention.
[034] In an embodiment where the elements are implemented using software, the software may be stored in a computer-readable medium and loaded into the computing system 100 using, for example, the removable storage unit 114, the media drive 110 or the communications interface 118. The control logic (in this example, software instructions or computer program code), when executed by the processor 102, causes the processor 102 to perform the functions of the invention as described herein.
[035] Referring now to FIG. 2, a block diagram of a data structure 200 of a plurality of applications 202, 204, 206 is illustrated, in accordance with some embodiments of the present disclosure. Further, a plurality of application flows associated with the plurality of applications 202, 204, 206 are illustrated. An application flow (also referred to as simply “flow” in this disclosure) associated with the application 202 may be represented as A1F1, A1F2, A2F1, A2F2, A3F1, A3F2. For example, the flow A1F1 may include one or more data elements (for example, method blocks and functional blocks) that are within a boundary of the application 202. Similarly, the functional flow A2F1 may include one or more data elements that are within the boundary of application 204.
[036] Each of the plurality of applications may include at least one method. The at least one method (for example, a method (M1)) within the application 202 (A1) may be represented as A1-M1. In an embodiment, each of the at least one method may further include at least one functional block. It may be noted that the at least one functional block (for example, a code block, a functional block, etc.) within the method A1-M1 of the application 202 may be represented as F1.1.1, F1.1.2, F1.1.3, etc. Similarly, the application A1 may further include methods A1-M2, A1-M3, A1-M4, A1-M5, A1-M6, A1-M7, and A1-M8. Each of these methods may further include at least one functional block. Further, the application A2 may include methods A2-M1, A2-M3, A2-M5, and A2-M7, and the application A3 may include methods A3-M2, A3-M4, A3-M6, and A3-M8. Each of these methods may further include at least one respective functional block.
[037] It should be noted that a business functional flow may exist across a plurality of application boundaries. For example, as shown in FIG. 2, business functional flows F1, F2 may be distributed across the plurality of applications 202, 204, 206. Each of these business functional flows F1, F2 may include functional blocks which in spite of being distributed across different applications (i.e. applications 202, 204, 206) may be related to each other. The business functional flows F1, F2 are further explained in detail in conjunction with FIGS. 3A-3B.
[038] Referring now to FIGs. 3A-3B, schematic representations 300A, 300B of the business functional flows F1 and F2, respectively are illustrated, in accordance with some embodiments of the present disclosure. It may be noted that each of business functional flows F1 and F2 may include one or more functional blocks that may be further associated with related application flows distributed across the plurality of applications 202, 204, 206. For example, the business functional flow F1 may include functional blocks F1.1.1, F1.3.1, F1.3.3, F1.4.1, F1.6.2, F1.7.2, and F1.8.1 associated with application flow A1F1, functional blocks F2.1.1, F2.3.2, and F3.3.3 associated with application flow A2F1, and functional blocks F3.6.1, F3.6.2, F1.7.2, and F3.8.3 associated with application flow A3F1. Similarly, the business functional flow F2 may include functional blocks F1.2.2, F1.2.3, F1.4.2, F1.3.2, F1.5.1, F1.5.2, and F1.7.1 associated with application flow A1F2, functional blocks F2.1.2, F2.5.1, and F2.7.2 associated with application flow A2F2, and functional blocks F3.2.1 and F3.4.2 associated with application flow A3F2. The grouping of one or more related methods and the one or more related functional blocks across different applications may be performed based on business functionalities F1 and F2, as shown in FIGs. 3A-3B.
[039] In some embodiments, an overall functional flow may be disconnected based on one or more reasons, for example, a multi-tiered distributed application where business logic passes through different independently deployable sub-systems, a business logic flow passes through in between message queues, a business logic tied up with data flow than functional logic, or combination all the above three scenarios. In some embodiments, an approach for associating disconnected functional flows in different business boundaries for a high-level business function is disclosed.
[040] As will be described in greater detail in conjunction with subsequent embodiments, the data elements of the disconnected flow in the above-mentioned scenarios may be grouped based on a relationship index between the application flows across application boundaries. In some embodiments, a three-layered analysis may be performed for identifying related functional elements. The three-layered analysis may include an application functional flow level analysis, a method level analysis, and a functional block analysis.
[041] In some embodiments, the application functional flow level analysis may be performed based on a traceable call stack in an application boundary which may be considered as a single entity for identifying the related functional elements. In the method level analysis, one or more related methods in a functional flow may be grouped based on a mutual relationship with respect to the business functionality. It may be noted that, the one or more related methods may be grouped based on the mutual relationship irrespective of the one or more related methods that may be in different functional flows. The function block analysis may include grouping together one or more related code blocks or functional blocks in one or more related methods. The one or more related code blocks or functional blocks, even if in different methods, may be grouped based on the mutual relationship with respect to the business functionality.
[042] The three-layered analysis may act as a multi-dimensional analysis to group the related elements of the business logic even if the related elements is mix of above-mentioned scenarios and any layers as described above. The three-layered analysis may further perform an optimization and gap analysis to fine tune the cluster/group with respect to the objective of clustering/grouping.
[043] Referring now to FIG. 4, a block diagram of a multi-tiered distributed application 400 including two exemplary subsystems 402, 404 is illustrated, in accordance with some embodiments of the present disclosure. As mentioned earlier, the overall functional flows may be disconnected based on one or more scenarios. FIG. 4 shows an exemplary scenario from the above discussed scenarios in which functional flows are disconnected within the multi-tiered distributed applications where business logic passes through different independently deployable subsystems 402, 404.
[044] The multi-tiered distributed application 400 may include at least two subsystems (for example, the subsystem 402 and the subsystem 404). Each subsystem 402, 404 may include separate databases. For example, the subsystem 402 may include a database 406 and the subsystem 404 may include a database 408. Each of the database (for example, database 406 and database 408) may further include a plurality of data tables (for example, T1, T2, T3, … Tn). It may be noted that, one or more relevant methods in each of the subsystems 402, 404 may have the data tables dependency (as shown in FIG. 4 via connecting lines). The data tables may have intra-dependency or inter-dependency with each of the subsystem.
[045] One or more application flows may exist in each of the subsystems 402, 404. For example, in subsystem 402, the one or more application flows in the subsystem 402 may include application flows A1FL1, A1FL2, and A1FL3. Similarly, the one or more application flows in the subsystem 404 may include application flows A2FL1, A2FL2, A2FL3, and A2FL4. Further, each application flow may include one or more related methods. For example, the application flow A1FL1 may include methods A1M1, A1M2, A1M3, and A1M10, the application flow A1FL2 may include methods A1M1, A1M2, A1M5, A1M7, and A1M8, and the application flow A1FL3 may include methods A1M3, A1M5, and A1M9. Further, the application flow A2FL1 may include methods A2M1, A2M2, A2M3, and A2M1, the application flow A2FL2 may include methods A2M1, A2M2, A2M5, A2M7, A2M8, the application flow A2FL3 may include methods A2M3, A2M5, and A2M9, and the application flow A2FL4 may include methods A2M2, A2M4, A2M5, A2M6, and A2M9.
[046] The functional flows of each of the subsystems 402, 404 may be compared with the functional flows of other subsystems based on predefined parameters to identify a relationship index for grouping the defined flows. In other words, functional flows of the subsystem 402 may be compared with the functional flows of subsystem 404 based on predefined parameters to identify a relationship index for grouping the defined flows.
[047] The predefined parameters based on which the relation index may be identified includes an entry point and interface tracing, a data tracing, and a content tracking. In the entry point and interface tracing, each flow of subsystems may be analyzed against all the flows of available subsystems. For performing the analysis, a two-dimensional search may be carried out in which the entry point of a flow may be searched in all the flows semantically to see the related flow. Later, each flow may be traced to identify external interface calls from the flow. It may be noted that each identified external interface may be searched in the entry points of each of all the other flows.
[048] Referring now to FIG. 5, an exemplary Table 500 depicting relationship index between application flows (or simply, flows) corresponding to two subsystems (for example, subsystem 402 and the subsystem 404) is illustrated, in accordance with some embodiments. The relationship index may be calculated for various different scenarios. The scenarios, for example, may include (i) one to one relationship between subsystem flows, in which, one flow of one subsystem may be related only with one flow of another subsystem. The scenarios may further include (ii) one to many relationships between subsystem flows in which one flow of first subsystem is related with many flows of another subsystem. The scenarios may further include (iii) many to one relationship between subsystem flows in which more than one flows of first subsystem are related with one flows of another subsystem. Further, the scenarios may include (iv) many to many relationship between subsystem flows in which more than one flow of first subsystem is related with more than one flows of another subsystem.
[049] As shown in the Table 500, the values of the relationship index may vary from 0 to 100. The relationship index having a value zero may indicate that entry points or interfaces related to one flow have no or low match with the entry points or interfaces of other flow. In other words, there may be no or low relationship between these two flows, and these flows may not be clustered together. For example, the relationship index value for the relationship between the flow A1FL1 and the flow A2FL1 is “0”, thereby indicating no degree of relationship therebetween. Further, a relationship index value of 100 may indicate that the entry point or interface of one flow may be completely matching with the entry points or interfaces of the second flow. Such flows may be 100 percent related, and therefore may be considered for clustering/grouping. It may be noted that higher the relationship index value, higher may be the degree of relationship between the functional flows.
[050] A threshold relationship index may be defined for grouping two flows. For example, the threshold relationship index may be “60”. As such, two flows having a threshold relationship index equal to greater than “60” may be considered for grouping together. As such, as shown in the Table 500, based on the threshold relationship index (for example, “60”), the flows A1FL2 and A2Fl1, the flows A1FL2 and A2FL3, the flows A2FL3 and A2FL2, the flows A1FL3 and A2FL3, and the flows A1FL3 and A2FL4 may be grouped together.
[051] Referring now to FIG. 6, a block diagram of an exemplary multi-tiered distributed application 600 illustrated, in accordance with some embodiments of the present disclosure. The relationship indices in the multi-tiered distributed application 600 may be identified based on data tracing. The multi-tiered distributed application 600 may include a subsystem 602 and a subsystem 604. Each of the subsystem 602, 604 may include a functional flow. Further, the subsystem 602 and the subsystem 604 may include a database 606 and a database 608, respectively. Each of the database may include a plurality of data tables. Each of the data table may have data dependency.
[052] In an embodiment, each flow may be traced to identify tables and data elements dependency. Further, the plurality of tables and data elements may be mapped against a plurality of entities, and accordingly a related entity from the plurality of entities (for example, entities E1-E5) may be identified. Based on the entity relationship, a data element relationship may be identified. Further, the functional flow relationship may be identified based on the data element relationship of the related entities.
[053] In an embodiment, a direct and indirect relationship between the flows of subsystems 602, 604 may be determined. Further, by way of an example, a flow A1FL1 of the subsystem 604 may be directly traced using data on Tables T3 and T12. Further, the tables T3 and T12 may be associated with entities E2 and E3. Further, a table T9 in subsystem 604 may directly associated with entity E2. The functional flow A2FL4 of the subsystem 604 may be directly traced using the table T9. Therefore, in this manner the functional flow A2FL4 may be directly related to the functional flow A1FL1, based on the common entity E2.
[054] Further, by way of an example, the entity E3 may be associated with another entity E4. The entity E4 may be used by table T15, and the table T15 may be used by the functional flow A2FL1. Hence, the functional flow A2FL1 may be indirectly related to the functional flow A1FL1. Thus, in this way, the relationship between each functional flow of the subsystems 602, 604 may be calculated.
[055] The above calculated relationships may be either: (i) an owner relationship (i.e., for example, a relationship in which a flow is creating or editing the data element of the entity); or (ii) a consumer relationship (i.e., for example, a relationship in which the flow is not editing but using the entity); or (iii) both the owner and the consumer relationship.
[056] In some embodiments, the relationship index between the functional flows of subsystem 602 and subsystem 604 may be identified based on data elements that are consumed and processed. The identification may also consider the inter-relationship between the data elements. Further, an entity associated with the data element may be identified. By way of an example, “Product_Id” may be a data element and “Product” may be the entity. Further, all the data elements associated with the entity may be grouped together. The above analysis may be performed for all the available subsystems to identify all the entities the application deals with. Further, such entities may be grouped based on their logical relationship, and the functional flow and the entity relationship may be identified.
[057] Referring now to FIG. 7, an exemplary block diagram 700 of a functional block with data inflow 704 and data outflow 706 is illustrated, in accordance with some embodiments. A content-driven comparison-based relationship index may be identified based on an analysis of the data inflow 704 and the data outflow 706. In particularly, the content handled by methods of the flow may be considered for relationship identification. It should be noted that runtime values of the arguments may influence the flow in some type of applications. As shown in FIG. 7, the data inflow to the functional block 702 may include a method argument, configurations and environment variable, external libraries, and query result from data base. The data outflow 706 from the functional block 702 may include a return value of a function, an update on environment, a report generated in a file system, and an update on a database (DB).
[058] It may be noted that the business logic or functional flow in case may be clustered by grouping the functional blocks in the methods where the related contents (i.e. the inflow data and the outflow) are processed. Further, relationship indices may be calculated using the above-mentioned approaches that may be consolidated along with its weightage to calculate the final flow relationship index between the two functional flows of the subsystems.
[059] Referring now to FIG. 8A, an exemplary Table 800A depicting consolidated relationship matrix for various flows is illustrated, in accordance with some embodiments. The exemplary Table 800A may include the relationship matrix for flows associated with the subsystem 602 and the subsystem 604. The flows may be grouped based on the threshold relationship index value. It may be noted that the threshold relationship index value may be decided as per the business requirements.
[060] By way of an example, the value of threshold relationship index value may be considered to be “60”. Based on the above threshold relationship index value, the flows may be grouped as: Group 1: A1FL1; Group 2: A1FL2, A2FL1; Group 3: A1FL2, A2FL3; Group 4: A1FL3, A2FL2; Group 5: A1FL3, A2FL3; and Group 6: A1FL3, A2FL4.
[061] In some embodiments, a relationship-based grouping may be analyzed for further optimization. In the above case, if the suggested groups are considered, it can be observed that the flow AL1FL3 is in multiple groups (for example, at least in three groups – Group 4, Group 5, and Group 6). Therefore, a relationship between the functional flow A1FL3 against other related flows: A2FL2, A2FL3 and A2FL4 may be further analyzed.
[062] Referring now to FIG. 8B, an exemplary Table 800B depicting consolidated relationship matrix between methods of the flow AL1FL3 with the related groups as above (i.e. three flows A2FL2, A2FL3 and A2FL4) is illustrated, in accordance with some embodiments. As such, the exemplary Table 800B may include the relationship matrix for the methods associated with the flow AL1FL3 and the related flows A2FL2, A2FL3 and A2FL4.
[063] It may be noted that all of the above-mentioned dimensional analysis may be further performed in method level to identify the nature of relationship and optimization.
[064] As shown in the exemplary Table 800B, a method A1FL3-A1M3 associated with the flow A1FL3 may be related to flows A2 FL2 and A2 FL3. Hence this may be further considered for deep analysis for bettering the grouping.
[065] It may be noted that each of the method affiliated with multiple flows may be further analyzed at the functional block level to isolate the dependency and relationship. For example, the functional blocks associated with method A1FL3-A1M3 are shown in FIG. 8C. FIG. 8C illustrates a block diagram 800C of the method A1FL3-A1M3 (i.e. method A1M3 of the flow A1FL3), in accordance with some exemplary embodiments. As shown, the method A1FL3-A1M3 may include functional blocks F1.3.1, F1.3.2, and F1.3.3. Furthermore, relationship of each of the functional blocks with the flows two other flows A2 FL2 and A2 FL3 may be analyzed, as shown in Table 800D in FIG. 8D.
[066] Referring now to FIG. 8D, an exemplary Table 800D depicting relationship matrices of relationship between each of the functional blocks of a related method of one flow with the remaining flows is illustrated, in accordance with some embodiments. The functional block associated with the method A1FL3-A1M3 of FIG. 8C may be analyzed against the flows A2 FL2 and A2 FL3 to determine the relationship matrices therebetween. As such, relationship matrices may be calculated through different dimensions of analysis.
[067] It should be noted that in the same manner as above, multidimensional analysis may be recursively applied to the flows, the methods, and the functions (i.e. functional block) to identify the related data elements for the business functional flow. It should be further noted that the related data elements may include methods, functional blocks, or sub flows. All these related data elements may be grouped in a cluster, in the order it is occurring in the flow, to generate a business functional flow, as shown in FIG. 9.
[068] Referring now to FIG. 9, a block diagram of an exemplary business functional flow 900 is illustrated, in accordance with some embodiments of the present disclosure. As shown in FIG. 9, the exemplary business functional flow 900 may include related data elements. It may be noted that, the related data elements of the business functional flow, as shown in FIG. 9 may be obtained through the different stages of analysis, as discussed above in conjunction with FIGs. 2-8. The related data elements may be either the sub flows, methods, or functional blocks spread across different subsystems or applications.
[069] For example, as shown in FIG. 9, the business functional flow 900 may include one or more related methods: A1M1, A2M6, A1M8, and A2M3, one or more functional flows in the one or more related methods: F1.3.1, F1.4.1, F1.7.2, and F2.1.1; and a subflow A3F1. These data elements may be analyzed for required customization and integration.
[070] Referring now to FIG. 10, a flowchart of a method 1000 for grouping functional elements across a plurality of applications is illustrated, in accordance with some embodiments of the present disclosure. By way of an example, the method 1000 may be implemented by the processor 102.
[071] At step 1002, a plurality of application flows associated with each application of a plurality of applications may be identified. Each of the plurality of applications may include at least one method, and each of the at least one method may further include at least one functional block. At step 1004, one or more pairs of related application flows may be determined. In an embodiment, each pair of the one or more pairs may include application flows associated with different applications. This is further explained in conjunction with FIGs. 11-14.
[072] Referring now to FIG. 11, a flowchart of an exemplary method 1100 of determining the one or more pairs of related application flows, corresponding to the method 1000 is illustrated, in accordance with an embodiment of the present disclosure.
[073] In some embodiments, at step 1102, an entry point may be identified in each of the plurality of application flows associated with each application of the plurality of applications. At step 1104, a call interface may be identified in each of the plurality of application flows associated with each application of the plurality of applications. At step 1106, at least one of the entry point and the call interface identified in an application flow may be mapped with another application flow of each pair of a plurality of pairs of application flows. It should be noted that each pair may include application flows associated with different applications. At step 1108, a first relationship index may be determined for each pair corresponding to a degree of similarity between application flows of the respective pair, based on the mapping. Further, at step 1110, the one or more pairs of related application flows may be determined based on the first relationship index.
[074] Referring now to FIG. 12, a flowchart of an exemplary method 1200 of determining the one or more pairs of related application flows, corresponding to the method 1000 is illustrated, in accordance with another embodiment of the present disclosure.
[075] At step 1202, a plurality of entities associated with a plurality of tables and data elements may be identified. Each of the plurality of application flows may include a plurality of tables and data elements. At step 1204, one or more pairs of related entities may be determined from the plurality of entities, based on a degree of similarity between the entities. At step 1206, one or more pairs of tables and data elements associated with the one or more pairs of related entities may be identified to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
[076] Additionally, in some embodiments, at step 1208, a second relationship index between each of the one or more related pairs of application flows may be determined, based on the degree of similarity between the entities.
[077] Referring now to FIG. 13, a flowchart of an exemplary method 1300 of determining the one or more pairs of related application flows, corresponding to the method 1000 is illustrated, in accordance with yet another embodiment of the present disclosure.
[078] At step 1302, an in-application flow content inputted to a functional block of a plurality of functional blocks of each method of each application flow of the plurality of applications may be obtained. By way of an example, the in-application flow content may include at least one of a method argument, a configuration, and a query result from a database. At step 1304, an out-application flow content outputted by a functional block of the plurality of functional blocks of each method of each application flow of the plurality of applications may be obtained. By way of an example, the out-application flow content may include at least one of a return value of the function block, a report generated in a file system, and an updating data in the database.
[079] At step 1306, in one embodiment, a degree of similarity may be determined between the in-application flow contents inputted to the plurality of functionals. Alternately, at step 1306, a degree of similarity may be determined between the out-application flow contents outputted by the plurality of functional blocks.
[080] At step 1308, the one or more related functional blocks may be identified based on the degree of relationship between the associated in-application flow contents or the associated out-application flow contents to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
[081] In some embodiments, additionally, at step 1310, a third relationship index may be determined between each of the one or more related pairs of application flows, based on the degree of similarity between the associated in-application flow contents or the associated out-application flow contents.
[082] Referring now to FIG. 14, a flowchart of an exemplary method 1400 of determining the one or more pairs of related application flows, corresponding to the method 1000 is illustrated, in accordance with yet another embodiment of the present disclosure.
[083] At step 1402, a final relationship index may be calculated based on the first relationship index, the second relationship index, and the third relationship index. At step 1404, the one or more pairs of related application flows may be determined based on the final relationship index.
[084] Returning back to FIG. 10, at step 1006, one or more related methods may be identified from each application flow of each pair of application flows. It should be noted that each related method maybe related to the other application flow of the pair of application flows. Further, at step 1008, one or more related functional blocks may be identified from each related method. Each related functional block may be related to the other application flow of the pair of application flows. At step 1010, one or more related functional blocks may be identified from each related method. Each related functional block may be related to the other application flow of the pair of application flows.
[085] At step 1012, a functional flow may be generated by grouping the one or more related methods and the one or more related functional blocks. In one exemplary embodiment, generating the functional flow may further include grouping one or more sub-flows with the one or more related methods and the one or more related functional blocks. In some embodiments, generating the functional flow further may include grouping one or more sub-flows with the one or more related methods and the one or more related functional blocks.
[086] One or more techniques are disclosed above for grouping together related functional elements across applications. Through the above-mentioned techniques, monolith applications of different technologies may be analyzed to identify and optimize list of requirements to move to transform. Further, the above techniques may be applied for multiple different scenarios, as explained above, as well as other scenarios with different weightages one different stages. For example, the other scenarios may include (i) the business logic flow passing through in-between message queues, (ii) the business logic tied up with data flow than functional logic flow, and (iii) combination of all the above two scenarios. As such, the techniques provide for a significant reduction in time and effort required for identifying and upgrading related business logic distributed in different distributed subsystems.
[087] As will be appreciated, the above-described techniques may take the form of computer or controller implemented processes and apparatuses for practicing those processes. The disclosure can also be embodied in the form of computer program code containing instructions embodied in tangible media, such as floppy diskettes, solid state drives, CD-ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer or controller, the computer becomes an apparatus for practicing the invention. The disclosure may also be embodied in the form of computer program code or signal, for example, whether stored in a storage medium, loaded into and/or executed by a computer or controller, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits.
[088] The disclosed methods and systems may be implemented on a conventional or a general-purpose computer system, such as a personal computer (PC) or server computer.
[089] As will be appreciated by those skilled in the art, the techniques described in the various embodiments discussed above are not routine, or conventional, or well understood in the art. The techniques discussed above provide for grouping functional elements across the plurality of applications. Further, the techniques may apply multi-stages data and content driven analysis on multiple data elements in different permutation combinations in recursive way for identifying the related process elements and grouping them based on business logic. The invention may group the elements related to a business functionality even if, it is distributed across boundaries and/or hidden inside application architecture and coding pattern. Furthermore, the techniques may provide a significant reduction modernizing the business logic distributed in different distributed subsystems.
[090] In light of the above-mentioned advantages and the technical advancements provided by the disclosed method and system, the claimed steps as discussed above are not routine, conventional, or well understood in the art, as the claimed steps enable the following solutions to the existing problems in conventional technologies. Further, the claimed steps clearly bring an improvement in the functioning of the device itself as the claimed steps provide a technical solution to a technical problem.
[091] The specification has described method and system for evaluating stages in a digital or software development cycle through quality gates. The illustrated steps are set out to explain the exemplary embodiments shown, and it should be anticipated that ongoing technological development will change the manner in which particular functions are performed. These examples are presented herein for purposes of illustration, and not limitation. Further, the boundaries of the functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternative boundaries can be defined so long as the specified functions and relationships thereof are appropriately performed. Alternatives (including equivalents, extensions, variations, deviations, etc., of those described herein) will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein. Such alternatives fall within the scope and spirit of the disclosed embodiments.
[092] Furthermore, one or more computer-readable storage media may be utilized in implementing embodiments consistent with the present disclosure. A computer-readable storage medium refers to any type of physical memory on which information or data readable by a processor may be stored. Thus, a computer-readable storage medium may store instructions for execution by one or more processors, including instructions for causing the processor(s) to perform steps or stages consistent with the embodiments described herein. The term “computer-readable medium” should be understood to include tangible items and exclude carrier waves and transient signals, i.e., be non-transitory. Examples include random access memory (RAM), read-only memory (ROM), volatile memory, nonvolatile memory, hard drives, CD ROMs, DVDs, flash drives, disks, and any other known physical storage media.
[093] It is intended that the disclosure and examples be considered as exemplary only, with a true scope and spirit of disclosed embodiments being indicated by the following claims.
CLAIMS
What is claimed is:
1. A method of grouping functional elements across applications, the method comprising:
identifying, by a processor, a plurality of application flows associated with each application of a plurality of applications, wherein each of the plurality of applications comprises at least one method, and wherein each of the at least one method comprises at least one functional block;
determining, by the processor, one or more pairs of related application flows, wherein each pair of the one or more pairs comprises application flows associated with different applications;
identifying, by the processor, from each application flow of each pair of application flows, one or more related methods, each related method being related to the other application flow of the pair of application flows;
identifying, by the processor, from each related method, one or more related functional blocks, each related functional block being related to the other application flow of the pair of application flows; and
generating, by the processor, a functional flow by grouping the one or more related methods and the one or more related functional blocks.
2. The method as claimed in claim 1, wherein determining the one or more pairs of related application flows comprises:
identifying an entry point in each of the plurality of application flows associated with each application of the plurality of applications;
identifying a call interface in each of the plurality of application flows associated with each application of the plurality of applications;
mapping at least one of the entry point and the call interface identified in an application flow with another application flow of each pair of a plurality of pairs of application flows, each pair comprising application flows associated with different applications;
determining a first relationship index for each pair corresponding to a degree of similarity between application flows of the respective pair, based on the mapping; and
determining the one or more pairs of related application flows based on the first relationship index.
3. The method as claimed in claim 1, wherein determining the one or more pairs of related application flows further comprises:
identifying a plurality of entities associated with a plurality of tables and data elements, wherein each of the plurality of application flows comprises a plurality of tables and data elements;
determining one or more pairs of related entities from the plurality of entities, based on a degree of similarity between the entities; and
identifying one or more pairs of tables and data elements associated with the one or more pairs of related entities to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
4. The method as claimed in claim 3 further comprising:
determining a second relationship index between each of the one or more related pairs of application flows, based on the degree of similarity between the entities.
5. The method as claimed in claim 1, wherein determining the one or more pairs of related application flows further comprises:
obtaining an in-application flow content inputted to a functional block of a plurality of functional blocks of each method of each application flow of the plurality of applications;
obtaining an out-application flow content outputted by a functional block of the plurality of functional blocks of each method of each application flow of the plurality of applications;
determining a degree of similarity between:
the in-application flow contents inputted to the plurality of functionals, or
the out-application flow contents outputted by the plurality of functional blocks; and
identifying the one or more related functional blocks based on the degree of relationship between the associated in-application flow contents or the associated out-application flow contents to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
6. The method as claimed in claim 5 further comprising:
determining a third relationship index between each of the one or more related pairs of application flows, based on the degree of similarity between the associated in-application flow contents or the associated out-application flow contents.
7. The method as claimed in claim 5, wherein,
the in-application flow content comprises at least one of:
a method argument;
a configuration; and
a query result from a database; and
the out-application flow content comprises at least one of:
a return value of the function block;
a report generated in a file system; and
an updating data in the database.
8. The method as claimed in claim 1, wherein determining the one or more pairs of related application flows further comprises:
calculating a final relationship index based on the first relationship index, the second relationship index, and the third relationship index; and
determining the one or more pairs of related application flows based on the final relationship index.
9. The method as claimed in claim 1, wherein generating the functional flow further comprises grouping one or more sub-flows with the one or more related methods and the one or more related functional blocks.
10. A system for grouping functional elements across applications, the system comprising:
a processor and a memory communicatively coupled to the processor, wherein the memory stores processor-executable instructions, which, on execution, causes the processor to:
identify a plurality of application flows associated with each application of a plurality of applications, wherein each of the plurality of applications comprises at least one method, and wherein each of the at least one method comprises at least one functional block;
determine one or more pairs of related application flows, wherein each pair of the one or more pairs comprises application flows associated with different applications;
identify from each application flow of each pair of application flows, one or more related methods, each related method being related to the other application flow of the pair of application flows;
identify from each related method, one or more related functional blocks, each related functional block being related to the other application flow of the pair of application flows; and
generate a functional flow by grouping the one or more related methods and the one or more related functional blocks.
11. The system as claimed in claim 10, wherein for determining the one or more pairs of related application flows, the processor instructions, on execution, further cause the processor to:
identify an entry point in each of the plurality of application flows associated with each application of the plurality of applications;
identify a call interface in each of the plurality of application flows associated with each application of the plurality of applications;
map at least one of the entry point and the call interface identified in an application flow with another application flow of each pair of a plurality of pairs of application flows, each pair comprising application flows associated with different applications;
determine a first relationship index for each pair corresponding to a degree of similarity between application flows of the respective pair, based on the mapping; and
determine the one or more pairs of related application flows based on the first relationship index.
12. system as claimed in claim 10, wherein for determining the one or more pairs of related application flows, the processor instructions, on execution, further cause the processor to:
identify a plurality of entities associated with a plurality of tables and data elements, wherein each of the plurality of application flows comprises a plurality of tables and data elements;
determine one or more pairs of related entities from the plurality of entities, based on a degree of similarity between the entities to further identify one or more pairs of tables and data elements associated with the one or more pairs of related entities; and
determine a second relationship index between each of the one or more related pairs of application flows, based on the degree of similarity between the entities to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
13. The system as claimed in claim 10, wherein for determining the one or more pairs of related application flows, the processor instructions, on execution, further cause the processor to:
obtain an in-application flow content inputted to a functional block of a plurality of functional blocks of each method of each application flow of the plurality of applications;
obtain an out-application flow content outputted by a functional block of the plurality of functional blocks of each method of each application flow of the plurality of applications;
determine a degree of similarity between:
the in-application flow contents inputted to the plurality of functionals, or
the out-application flow contents outputted by the plurality of functional blocks; and
identify the one or more related functional blocks based on the degree of relationship between the associated in-application flow contents or the associated out-application flow contents; and
determine a third relationship index between each of the one or more related pairs of application flows based on the degree of similarity between the associated in-application flow contents or the associated out-application flow contents, to further identify one or more related pairs of application flows associated with the identified the tables and data elements.
14. The system as claimed in claim 13, wherein,
the in-application flow content comprises at least one of:
a method argument;
a configuration; and
a query result from a database; and
the out-application flow content comprises at least one of:
a return value of the function block;
a report generated in a file system; and
an updating data in the database.
15. The system as claimed in claim 10, wherein for determining the one or more pairs of related application flows, the processor instructions, on execution, further cause the processor to:
calculate a final relationship index based on the first relationship index, the second relationship index, and the third relationship index; and
determine the one or more pairs of related application flows based on the final relationship index.
| # | Name | Date |
|---|---|---|
| 1 | 202211006227-FORM 4 [18-11-2024(online)].pdf | 2024-11-18 |
| 1 | 202211006227-FORM 4 [20-11-2024(online)].pdf | 2024-11-20 |
| 1 | 202211006227-STATEMENT OF UNDERTAKING (FORM 3) [05-02-2022(online)].pdf | 2022-02-05 |
| 2 | 202211006227-FORM 4 [18-11-2024(online)].pdf | 2024-11-18 |
| 2 | 202211006227-IntimationOfGrant15-03-2024.pdf | 2024-03-15 |
| 2 | 202211006227-REQUEST FOR EXAMINATION (FORM-18) [05-02-2022(online)].pdf | 2022-02-05 |
| 3 | 202211006227-IntimationOfGrant15-03-2024.pdf | 2024-03-15 |
| 3 | 202211006227-PatentCertificate15-03-2024.pdf | 2024-03-15 |
| 3 | 202211006227-REQUEST FOR EARLY PUBLICATION(FORM-9) [05-02-2022(online)].pdf | 2022-02-05 |
| 4 | 202211006227-PROOF OF RIGHT [05-02-2022(online)].pdf | 2022-02-05 |
| 4 | 202211006227-PatentCertificate15-03-2024.pdf | 2024-03-15 |
| 4 | 202211006227-CLAIMS [04-01-2023(online)].pdf | 2023-01-04 |
| 5 | 202211006227-POWER OF AUTHORITY [05-02-2022(online)].pdf | 2022-02-05 |
| 5 | 202211006227-CORRESPONDENCE [04-01-2023(online)].pdf | 2023-01-04 |
| 5 | 202211006227-CLAIMS [04-01-2023(online)].pdf | 2023-01-04 |
| 6 | 202211006227-FORM-9 [05-02-2022(online)].pdf | 2022-02-05 |
| 6 | 202211006227-DRAWING [04-01-2023(online)].pdf | 2023-01-04 |
| 6 | 202211006227-CORRESPONDENCE [04-01-2023(online)].pdf | 2023-01-04 |
| 7 | 202211006227-FORM 18 [05-02-2022(online)].pdf | 2022-02-05 |
| 7 | 202211006227-FER_SER_REPLY [04-01-2023(online)].pdf | 2023-01-04 |
| 7 | 202211006227-DRAWING [04-01-2023(online)].pdf | 2023-01-04 |
| 8 | 202211006227-FER.pdf | 2022-07-08 |
| 8 | 202211006227-FER_SER_REPLY [04-01-2023(online)].pdf | 2023-01-04 |
| 8 | 202211006227-FORM 1 [05-02-2022(online)].pdf | 2022-02-05 |
| 9 | 202211006227-COMPLETE SPECIFICATION [05-02-2022(online)].pdf | 2022-02-05 |
| 9 | 202211006227-FER.pdf | 2022-07-08 |
| 9 | 202211006227-FIGURE OF ABSTRACT [05-02-2022(online)].jpg | 2022-02-05 |
| 10 | 202211006227-COMPLETE SPECIFICATION [05-02-2022(online)].pdf | 2022-02-05 |
| 10 | 202211006227-DECLARATION OF INVENTORSHIP (FORM 5) [05-02-2022(online)].pdf | 2022-02-05 |
| 10 | 202211006227-DRAWINGS [05-02-2022(online)].pdf | 2022-02-05 |
| 11 | 202211006227-DECLARATION OF INVENTORSHIP (FORM 5) [05-02-2022(online)].pdf | 2022-02-05 |
| 11 | 202211006227-DRAWINGS [05-02-2022(online)].pdf | 2022-02-05 |
| 12 | 202211006227-COMPLETE SPECIFICATION [05-02-2022(online)].pdf | 2022-02-05 |
| 12 | 202211006227-DRAWINGS [05-02-2022(online)].pdf | 2022-02-05 |
| 12 | 202211006227-FIGURE OF ABSTRACT [05-02-2022(online)].jpg | 2022-02-05 |
| 13 | 202211006227-FORM 1 [05-02-2022(online)].pdf | 2022-02-05 |
| 13 | 202211006227-FIGURE OF ABSTRACT [05-02-2022(online)].jpg | 2022-02-05 |
| 13 | 202211006227-FER.pdf | 2022-07-08 |
| 14 | 202211006227-FER_SER_REPLY [04-01-2023(online)].pdf | 2023-01-04 |
| 14 | 202211006227-FORM 1 [05-02-2022(online)].pdf | 2022-02-05 |
| 14 | 202211006227-FORM 18 [05-02-2022(online)].pdf | 2022-02-05 |
| 15 | 202211006227-DRAWING [04-01-2023(online)].pdf | 2023-01-04 |
| 15 | 202211006227-FORM 18 [05-02-2022(online)].pdf | 2022-02-05 |
| 15 | 202211006227-FORM-9 [05-02-2022(online)].pdf | 2022-02-05 |
| 16 | 202211006227-CORRESPONDENCE [04-01-2023(online)].pdf | 2023-01-04 |
| 16 | 202211006227-FORM-9 [05-02-2022(online)].pdf | 2022-02-05 |
| 16 | 202211006227-POWER OF AUTHORITY [05-02-2022(online)].pdf | 2022-02-05 |
| 17 | 202211006227-CLAIMS [04-01-2023(online)].pdf | 2023-01-04 |
| 17 | 202211006227-PROOF OF RIGHT [05-02-2022(online)].pdf | 2022-02-05 |
| 17 | 202211006227-POWER OF AUTHORITY [05-02-2022(online)].pdf | 2022-02-05 |
| 18 | 202211006227-PROOF OF RIGHT [05-02-2022(online)].pdf | 2022-02-05 |
| 18 | 202211006227-REQUEST FOR EARLY PUBLICATION(FORM-9) [05-02-2022(online)].pdf | 2022-02-05 |
| 18 | 202211006227-PatentCertificate15-03-2024.pdf | 2024-03-15 |
| 19 | 202211006227-REQUEST FOR EXAMINATION (FORM-18) [05-02-2022(online)].pdf | 2022-02-05 |
| 19 | 202211006227-REQUEST FOR EARLY PUBLICATION(FORM-9) [05-02-2022(online)].pdf | 2022-02-05 |
| 19 | 202211006227-IntimationOfGrant15-03-2024.pdf | 2024-03-15 |
| 20 | 202211006227-FORM 4 [18-11-2024(online)].pdf | 2024-11-18 |
| 20 | 202211006227-REQUEST FOR EXAMINATION (FORM-18) [05-02-2022(online)].pdf | 2022-02-05 |
| 20 | 202211006227-STATEMENT OF UNDERTAKING (FORM 3) [05-02-2022(online)].pdf | 2022-02-05 |
| 21 | 202211006227-FORM 4 [20-11-2024(online)].pdf | 2024-11-20 |
| 21 | 202211006227-STATEMENT OF UNDERTAKING (FORM 3) [05-02-2022(online)].pdf | 2022-02-05 |
| 1 | 202211006227E_07-07-2022.pdf |