Method, recording medium, and apparatus of dynamically connecting a plurality of tasks corresponding to event
The method dynamically links tasks and tracks execution to resolve call relationship challenges in distributed code, enhancing software development efficiency and error detection.
Patent Information
- Application Number
- PCT/KR2024/096695
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-06-12
- Filing Date
- 2024-12-11
- Publication Date
- 2025-12-18
AI Technical Summary
Existing software development methodologies face challenges in determining call relationships between codes from different libraries, leading to resource wastage and difficulty in managing distributed code execution, especially in single-threaded languages and event-driven environments.
A method for dynamically linking tasks by inserting tracking tasks and subtasks into main and subtask sets, using event-based execution and tracking completion, to determine execution order and identify errors.
Enables dynamic exploration of call relationships and error detection in distributed code execution, improving efficiency and accuracy in managing code execution.
Smart Images

Figure KR2024096695_18122025_PF_FP_ABST
Abstract
Description
Method, recording medium and device for dynamically linking multiple tasks corresponding to an event
[0001] The present disclosure relates to a technique for dynamically linking one or more tasks corresponding to an event triggered by a user's input.
[0002] Code is a kind of blueprint used in the development of various software. To implement software, libraries of code managed by different entities (e.g., operating system libraries, third-party libraries, etc.) may be utilized. However, when such diverse libraries are utilized, they are distributed and managed by different entities, making it difficult to determine the call relationships between the various codes contained within them during software execution.
[0003] Although it is not impossible to organize the call relationships of various codes included in various libraries, as mentioned above, since their management entities are distributed and different, this approach has led to excessive waste of resources.
[0004] The technical problem to be solved through this disclosure is to provide a technology capable of dynamically exploring the call relationships of various codes included in various libraries used for implementing software.
[0005] Another technical challenge to be addressed through this disclosure is to provide a technology capable of creating a connection point between the execution of various codes stored in a distributed manner.
[0006] Another technical challenge to be solved through this disclosure is to provide a technology capable of dynamically exploring the call relationships of various codes in software written in a single-threaded language.
[0007] Another technical challenge to be solved through this disclosure is to provide a technology capable of dynamically exploring the call relationships of various codes in units of events triggered by user input.
[0008] Another technical challenge to be addressed by the present disclosure is to provide a technique capable of detecting a portion where an error occurred during the execution of an event triggered by a user's input.
[0009] The technical problems of the present disclosure are not limited to the technical problems mentioned above, and other technical problems not mentioned can be clearly understood by a person skilled in the art of the present disclosure from the description of the specification.
[0010] According to one embodiment of the present disclosure, a method performed by an electronic device may include the steps of: executing a first main task of a main task set corresponding to a user's input based on the input, inserting a first tracking task for tracking execution of the first main task into the main task set, and inserting a first subtask for recording tracking completion of the first main task into a subtask set that is executed when execution of one or more main tasks included in the main task set is completely completed; executing a second main task included in the main task set and called by the first main task, inserting a second tracking task for tracking execution of the second main task into the main task set, and inserting a second subtask for recording tracking completion of the second main task into the subtask set; and determining an execution order of the one or more main tasks included in the main task set based on the completion of execution of the one or more subtasks included in the subtask set.
[0011] In one embodiment, the step of inserting the first tracking task into the main task set and the step of inserting the first subtask into the subtask set may include the step of generating an event corresponding to the input.
[0012] In one embodiment, the step of inserting the first tracking task into the main task set and inserting the first subtask into the subtask set may include the step of inserting the first subtask into the subtask set after a predetermined period of time has elapsed after inserting the first tracking task into the main task set.
[0013] In one embodiment, the main task set may further include a third main task related to a network connection request with the user terminal of the user, and may further include a step of inserting a third tracking task for tracking execution of the third main task into the main task set, and inserting a temporary sub task for recording execution of the third main task into the sub task set.
[0014] In one embodiment, the method may further include inserting a temporary tracking task for maintaining the third tracking task into the main task set based on the execution of the temporary subtask, and inserting a third subtask for recording the completion of tracking of the third tracking task into the subtask set.
[0015] In one embodiment, the main task set may further include a fourth main task related to display on the user terminal, and may further include a step of sequentially inserting into the main task set a fourth tracking task for tracking execution of the fourth main task and a fourth sub-task for recording completion of tracking of the fourth main task.
[0016] In one embodiment, if an error occurs in the execution of an event corresponding to the input, the method may further include a step of generating error information including the name of the first main task and the execution status of the first tracking task and the name of the second main task and the execution status of the second tracking task.
[0017] In one embodiment, the step of determining the execution order of the one or more main tasks included in the main task set may include the step of determining the execution order of the first main task and the second main task by using the duplicated maintenance states of the first tracking task and the second tracking task as connection points.
[0018] In another embodiment of the present disclosure, a non-transitory computer-readable recording medium having recorded thereon a computer program to be executed by a processor, wherein the computer program may be configured to cause the processor to execute the above-described method.
[0019] According to another embodiment of the present disclosure, an electronic device includes a communication interface configured to enable communication with a network, a processor configured to execute a computer program including one or more instructions, and a memory storing the computer program, wherein when the computer program is executed by the processor, the processor may be configured to execute the method described above.
[0020] According to the present disclosure, it is possible to dynamically explore the call relationships of various codes included in various libraries used for implementing software.
[0021] According to the present disclosure, a connection point can be created between the execution of various codes stored in a distributed manner.
[0022] According to the present disclosure, it is possible to dynamically explore the call relationships of various codes in software written in a single-thread-based language.
[0023] According to the present disclosure, it is possible to dynamically explore the call relationships of various codes in units of events triggered by user input.
[0024] According to the present disclosure, it is possible to detect a part where an error occurred during execution of an event triggered by a user's input.
[0025] The effects according to the technical idea of the present disclosure are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by a person skilled in the art of the present disclosure from the description of the specification.
[0026] FIG. 1 illustrates an environment in which devices according to one embodiment of the present disclosure can be applied.
[0027] FIG. 2 illustrates a computing device capable of implementing devices according to one embodiment of the present disclosure.
[0028] FIG. 3 illustrates a flowchart illustrating a method according to one embodiment of the present disclosure.
[0029] FIG. 4 illustrates a flowchart illustrating a method according to one embodiment of the present disclosure.
[0030] FIGS. 5 and 6 are diagrams illustrating an execution order of one or more tracking tasks and one or more sub-tasks that may be referenced in various embodiments of the present disclosure.
[0031] The various embodiments described in this disclosure are exemplified for the purpose of clearly explaining the technical concept of this disclosure and are not intended to be limited to specific embodiments. The technical concept of this disclosure includes various modifications, equivalents, alternatives, and embodiments selectively combined from all or part of the embodiments described in this disclosure. Furthermore, the scope of the technical concept of this disclosure is not limited to the various embodiments presented below or the specific descriptions thereof.
[0032] Terms used in this disclosure, including technical or scientific terms, unless otherwise defined, may have the meaning commonly understood by a person of ordinary skill in the art to which this disclosure belongs.
[0033] The expressions "includes," "may include," "comprises," "may have," "have," and "may have" used in this disclosure indicate the presence of a target feature (e.g., a function, operation, or component), but do not exclude the presence of other additional features. In other words, such expressions should be understood as open-ended terms that imply the possibility of including other embodiments.
[0034] The singular expressions used in this disclosure may include the plural meaning unless the context clearly indicates otherwise, and the same applies to the singular expressions set forth in the claims.
[0035] As used herein, expressions such as “first,” “second,” or “first,” “second,” etc., unless the context indicates otherwise, are used to refer to multiple similar objects and to distinguish one object from another, and do not limit the order or importance among the objects.
[0036] As used herein, the expressions "A, B, and C," "A, B, or C," "at least one of A, B, and C," or "at least one of A, B, or C" may refer to each of the listed items or all possible combinations of the listed items. For example, "at least one of A or B" may refer to (1) at least one A, (2) at least one B, or (3) at least one A and at least one B.
[0037] The expression "based on" as used in this disclosure is used to describe one or more factors that influence a decision, act of judgment, or action described in a phrase or sentence containing this expression, and this expression does not exclude additional factors that influence the decision, act of judgment, or action.
[0038] As used herein, the expression that a component (e.g., a first component) is “connected” or “connected” to another component (e.g., a second component) may mean that the component is directly connected or connected to the other component, as well as connected or connected via a new other component (e.g., a third component).
[0039] The expression "configured to" used in the present disclosure may have the meanings of "set to", "having the ability to", "modified to", "made to", "capable of", etc., depending on the context. This expression is not limited to the meaning of "specifically designed in hardware", and for example, a processor configured to perform a specific operation may mean a general purpose processor that can perform the specific operation by executing software, or a special purpose computer that is structured through programming to perform the specific operation.
[0040] Hereinafter, various embodiments of the present disclosure will be described with reference to the attached drawings. In the attached drawings and the description of the drawings, identical or substantially equivalent components may be assigned the same reference numerals. Furthermore, in the description of various embodiments below, duplicate descriptions of identical or corresponding components may be omitted, but this does not mean that such components are not included in the embodiments.
[0041] FIG. 1 illustrates an environment (100) to which devices (110, 120) according to one embodiment of the present disclosure may be applied. This environment (100) may include a management device (110) or a user terminal (120).
[0042] Meanwhile, although FIG. 1 illustrates an example in which a single user terminal (120) is applied to a management device (110), this is merely for convenience of understanding, and the number of user terminals (120) may vary. Furthermore, FIG. 1 merely illustrates a preferred embodiment for achieving the purpose of the present disclosure, and some components may be added as needed. For example, an administrator terminal (not shown) used by the entity managing the management device (110) may be added to the environment (100).
[0043] Below, each component illustrated in Fig. 1 will be described in more detail.
[0044] The management device (110) may be a server device operated under the management of the operator of the food delivery service. This management device (110) may be a device that performs all known operations related to food delivery services, including receiving a user's food delivery order, guiding the user to a store for the received order, or assigning a delivery person for the received order.
[0045] However, the management device (110) is not limited to the above-described examples, and may be any general-purpose server device. This management device (110) can dynamically connect multiple tasks corresponding to events triggered by user input by executing methods, etc., which will be described later with reference to the drawings below FIG. 3 . Here, a task may include one or more codes as an execution unit of work. To avoid redundant description, a description of a series of operations for dynamically connecting multiple tasks will be described later with reference to the drawings below FIG. 3 .
[0046] The management device (110) may be implemented as one or more computing devices. For example, all functions of the management device (110) may be implemented in a single computing device. For another example, the first function of the management device (110) may be implemented in a first computing device, and the second function may be implemented in a second computing device. As a specific example, if the management device (110) is a server device for a food delivery service, the first function related to the food delivery service may be implemented in the first computing device, and the second function related to the dynamic linking of multiple tasks may be implemented in the second computing device. Even if the first computing device and the second computing device exist physically separate and in reality, the first computing device and the second computing device may be referred to as the management device (110) as an abstract concept that integrates them.
[0047] The computing device mentioned above may be, for example, a desktop computer, a laptop computer, an application server, a proxy server, or a cloud server, but is not limited thereto, and any type of device equipped with computing capabilities may be a computing device.
[0048] The user terminal (120) may be a terminal of a user who uses a food delivery service provided by the management device (110). For example, the user terminal (120) may receive various user interfaces of the food delivery service from the management device (110). In this case, the user may transmit requests for various processing (e.g., requests for order processing, etc.) regarding products posted on the food delivery service to the management device (110) through the user interface provided to the user terminal (120).
[0049] Such a user terminal (120) can cause the management device (110) to execute multiple tasks corresponding to events of a food delivery service (e.g., key input, focus movement, selection of an object within a web page, etc.). According to the present disclosure, upon request via the user terminal (120), the management device (110) can execute multiple tasks according to a defined call relationship, and by tracking their execution, the execution order of the multiple tasks can be determined. Tracking of the execution of multiple tasks will be described later with reference to the drawings below, FIG. 3.
[0050] The user terminal (120) can display a web page to which a user interface provided by the management device (110) is applied on the display. Hereinafter, in the present disclosure, "displaying on the display of the user terminal (120)" may be simply referred to as "displaying on the user terminal (120)." In addition, the user terminal (120) can obtain input for the user interface and transmit the input to the management device (110), thereby performing various operations defined in advance to correspond to the input. In this way, in order for the user to efficiently use the delivery food service, a web browser or an application may be installed on the user terminal (120). The user terminal (120) may be, for example, any one of a desktop computer, a laptop computer, a tablet computer, a wearable device, or a smart phone, but is not limited thereto, and any type of device equipped with a computing function may be the user terminal (120).
[0051] The management device (110) or user terminal (120) illustrated in FIG. 1 can communicate via a network. This network can be implemented as any type of wired or wireless network, such as, for example, a local area network (LAN), a wide area network (WAN), a mobile radio communication network (MRCN), or WiBro (Wireless Broadband).
[0052] FIG. 2 illustrates a computing device (200) capable of implementing devices (110, 120) according to one embodiment of the present disclosure. In the present disclosure, the computing device (200) may be interchangeably referred to as an "electronic device." The management device (110) or user terminal (120) described above with reference to FIG. 1 may be implemented by this computing device (200).
[0053] A computing device (200) may include one or more processors (210), one or more memories (220), or a communication interface (230). In one embodiment, some components may be deleted from the computing device (200), or other components (e.g., a display or input device, etc.) may be added to the computing device (200). Additionally or alternatively, some components may be implemented in an integrated manner, or implemented as a single or multiple entities. In the present disclosure, one or more processors (210) may be referred to as a processor (210). The term “processor (210)” may mean a set of one or more processors, unless the context clearly indicates otherwise. In the present disclosure, one or more memories (220) may be referred to as a memory (220). The term “memory (220)” may mean a set of one or more memories, unless the context clearly indicates otherwise.
[0054] Below, each component illustrated in Fig. 2 will be described in more detail.
[0055] The processor (210) may perform calculations or information processing related to control or communication of each component of the computing device (200). Specifically, the processor (210) may control at least one component of the computing device (200) connected to the processor (210) by executing software (or a computer program) received from another component. As an example, the processor (210) may load a command (e.g., an instruction, a code, or a code segment) or information into the memory (220), process the command or information stored in the memory (220), and store result information according to the processing in the memory (220). In addition, the processor (210) may be operatively connected to the components of the computing device (200) to perform various operations such as calculations, processing, generation, or processing related to the present disclosure.
[0056] The memory (220) can store various information. The information stored in the memory (220) is information acquired, processed, or used by at least one component of the computing device (200), and may include software. The software may include one or more instructions that cause the processor (210) to perform operations according to various embodiments of the present disclosure when loaded into the memory (220). That is, the processor (210) may perform operations according to various embodiments of the present disclosure by executing the one or more instructions described above. The memory (220) may include, for example, volatile or non-volatile memory. In one embodiment, the program is software stored in the memory (220), and may include an operating system for controlling the resources of the computing device (200), an application, or middleware that provides various functions to the application so that the application can utilize the resources of the computing device (200).
[0057] The communication interface (230) can establish a wired or wireless communication channel with another device and transmit and receive various information with the other device. In one embodiment, the communication interface (230) may include at least one port for connecting to another device via a wired cable in order to communicate with the other device via a wired connection. In this case, the communication interface (230) can communicate with another device connected via a wired connection through the at least one port. In one embodiment, the communication interface (230) may be configured to include a cellular communication module and be connected to a cellular network (e.g., 3G, LTE, 5G, Wibro, or Wimax). In one embodiment, the communication interface (230) may include a short-range communication module and transmit and receive information with another device using short-range communication (e.g., Wi-Fi, Bluetooth, Bluetooth Low Energy (BLE), UWB). In one embodiment, the communication interface (230) may include a non-contact communication module for non-contact communication. Contactless communication may include at least one contactless proximity communication technology, such as Near Field Communication (NFC), Radio Frequency Identification (RFID), or Magnetic Secure Transmission (MST). In addition to the various examples described above, the computing device (200) may be implemented in various known ways to communicate with other devices, and the scope of the present disclosure is not limited by the examples described above.
[0058] In one embodiment, the computing device (200) may include a display. The display may display various screens based on the control of the processor (210). To display screens with various interfaces applied on the display, for example, a web browser or a dedicated application may be installed on the computing device (200). In addition, the display may be configured to interact with a user (or an administrator) and receive input from the user (or administrator). Such a display may be implemented in the form of a touch sensor panel (TSP) capable of recognizing contact or proximity of various external objects (e.g., a finger or a stylus).
[0059] In one embodiment, the computing device (200) may include an input device (e.g., a mouse or a keyboard). The input device may receive information to be used in components of the computing device (200) from outside the computing device (200).
[0060] The processor (210), memory (220), and communication interface (230) illustrated in FIG. 2 are connected to each other through a bus, GPIO (General Purpose Input / Output), SPI (Serial Peripheral Interface), or MIPI (Mobile Industry Processor Interface), and can send or receive information or signals.
[0061] Below, methods according to various embodiments of the present disclosure are described in detail. While operations are depicted in a specific order in the drawings below, it should be noted that the operations do not necessarily have to be performed in the specific order depicted or in a sequential order, or that all depicted operations must be performed to achieve the desired results.
[0062] Additionally, the operations of the method described with reference to the drawings below may be performed by a computing device. In other words, the operations of the method may be implemented as one or more instructions executed by a processor of the computing device. All operations included in this method may be executed by a single physical computing device, but the first operation of the method may be performed by a first computing device, and the second operation of the method may be performed by a second computing device.
[0063] Hereinafter, the description will continue assuming that the operations of the aforementioned method are performed by the management device (110) illustrated in FIG. 1. In addition, for convenience of explanation, the subject of the operations included in the method may be omitted; however, unless otherwise indicated in the context, it should be interpreted that the operations are performed by the management device (110).
[0064] FIG. 3 illustrates a flowchart illustrating a method (S300) according to one embodiment of the present disclosure. The method (S300) illustrated in FIG. 3 may include a series of operations for executing multiple tasks corresponding to events triggered by user input, while chronologically tracking the execution of each of the multiple tasks. This will be described in detail below with reference to FIG. 3.
[0065] Based on the user's input, the first main task of the main task set corresponding to the input may be executed, a first tracking task for tracking the execution of the first main task may be inserted into the main task set, and a first sub-task for recording the completion of tracking of the first main task may be inserted into the sub-task set (S310).
[0066] As mentioned above, a task may contain one or more codes as a unit of execution of work.
[0067] Tasks can be categorized into main tasks and subtasks based on their execution method. This difference in execution method can be attributed, for example, to the synchronous processing (processing only one task at a time) of single-threaded languages (e.g., JavaScript).
[0068] A main task can always be processed with priority over subtasks. For example, if a first subtask, a second subtask, a first main task, and a second main task are in the call stack in that order, the first main task and the second main task will be executed sequentially, and the first subtask and the second subtask can be executed based on the determination that there are no more main tasks. In other words, tasks are executed from the oldest task in the call stack, but subtasks can be executed only when all main tasks have finished executing. A main task can be interchangeably referred to as a "microtask," and a subtask can be interchangeably referred to as a "macrotask."
[0069] A main task set may include one or more main tasks. Furthermore, a subtask set may include one or more subtasks. Here, one or more subtasks included in a subtask set may only be executed when all main tasks included in the main task set have completed execution.
[0070] According to this operation (S310), a first main task corresponding to a user's input may be executed. Here, the first main task may be a work unit whose execution is defined according to the user's input.
[0071] Additionally, according to this operation (S310), a first tracing task for tracing the execution of the first main task may be inserted into the main task set. Here, the first tracing task may be a type of main task and may be a task for recording the start of execution of the first main task. This first tracing task may be implemented, for example, with code such as "startTrace()."
[0072] The first tracing task can be executed in the chronological order included in the main task set by being included in the main task set. After the first tracing task is executed, the tracing status of the first main task can be switched from "waiting" to "tracing."
[0073] Additionally, according to this operation (S310), a first subtask for recording the completion of tracing of the first main task may be inserted into the subtask set. Here, the first subtask may be a type of subtask and may be a task for recording the completion of tracing of the first main task. This first subtask may be implemented, for example, with code such as "setTrace(.finished)".
[0074] The insertion operation of this first subtask can be executed after a predetermined amount of time has elapsed since the insertion operation of the first tracking task. This predetermined amount of time can be implemented using code such as "setTimeout()."
[0075] The first subtask is included in the subtask set, and thus can be executed only after all main tasks included in the main task set have completed execution, in the chronological order included in the subtask set. Thus, after the first subtask is executed, the tracing status of the first main task can be switched from "tracing" to "finished."
[0076] If the first main task is the first work unit whose execution is defined based on user input, this operation (S310) may include an operation of generating an event corresponding to the user input. The generation of such an event may be implemented, for example, with code such as "createEvent()". According to the present embodiment, by generating an event corresponding to the first work unit whose execution is defined based on user input, one or more tasks to be subsequently executed can be distinguished as tasks related to the event. Accordingly, the call relationships of various tasks can be searched based on the event units triggered by the user input.
[0077] A second main task included in the main task set and called by the first main task may be executed, a second tracking task for tracking the execution of the second main task may be inserted into the main task set, and a second subtask for recording the completion of tracking of the second main task may be inserted into the subtask set (S320).
[0078] According to this operation (S320), the second main task may be any task defined to be executed after the execution of the first main task. Furthermore, the second tracking task may be a task for tracking the execution of the second main task. Furthermore, the second subtask may be a task for recording the completion of tracking of the second main task.
[0079] As for this operation (S320), all technical ideas described for operation S310 can be applied, except that the targets of execution and insertion are different.
[0080] According to the operations S310 and S320 described so far, the main task set may include main tasks in the order of {first main task, first tracking task, second main task, second tracking task}. In addition, the subtask set may include subtasks in the order of {first subtask, second subtask}. Accordingly, the execution order of these tasks may be {first main task, first tracking task, second main task, second tracking task, first subtask, second subtask}. Based on the execution order of these tasks, the operation S330 described below may be executed.
[0081] Based on the completion of execution of one or more subtasks included in the subtask set, the execution order of one or more main tasks included in the main task set can be determined (S330).
[0082] As described above, the execution order of the tasks may be {first main task, first tracing task, second main task, second tracing task, first subtask, second subtask}. Here, the tracing status of the first main task may be switched from "waiting" to "tracing" upon execution of the first tracing task, and may be switched from "tracing" to "finished" upon execution of the first subtask. Similarly, the tracing status of the second main task may be switched from "waiting" to "tracing" upon execution of the second tracing task, and may be switched from "tracing" to "finished" upon execution of the second subtask. In other words, the tracing statuses of the first and second main tasks may overlap as "tracing" for a certain period of time, thereby having a connection point with each other.
[0083] According to this operation (S330), by making the overlapping maintenance state of the tracing task (e.g., "tracing") a connection point between the first and second main tasks, the execution order of the first main task executed first and the second main task executed subsequently can be determined. Specifically, if the first tracing task is executed at time t1, the second tracing task is executed at time t2, the first sub-task is executed at time t3, and the second sub-task is executed at time t4, then from time t2 to time t3, the two tracing tasks may have an overlapping maintenance state. If a section having such an overlapping maintenance state is identified, the first main task traced by the first tracing task and the second main task traced by the second tracing task may be determined as tasks having a call relationship. In addition, by additionally determining the execution order of the tracing tasks, the execution order of the main tasks can also be determined. That is, the call relationship between multiple main tasks can be dynamically determined.
[0084] The method (S300) illustrated in FIG. 3 has been described based on an embodiment in which two main tasks are included in the main task set, but the number of main tasks can be expanded as desired. That is, by determining the overlap of tracking states according to the execution order of tasks, the call relationship between multiple main tasks can be dynamically determined in a manner similar to the method (S300) described with reference to FIG. 3.
[0085] In addition to the method (S300) illustrated in FIG. 3, the main task set may further include a third main task related to a network connection request with the user terminal (120). For example, when a change in the display of the user terminal (120) is requested in response to a user input, the third main task may be a task for changing the display on the user terminal (120) via a network connection. Since such a network connection request may be a request related to an API (Application Programming Interface), after the third main task related to the network connection request is executed, there may be a pause (“idle” state) in the main task set for responding to the API. When there is such an pause in the main task set, one or more subtasks included in the subtask set may be executed.
[0086] The operation for tracing the execution of the third main task may include inserting a third tracing task for tracing the execution of the third main task into the main task set, and inserting a temporary subtask for recording the execution of the third main task into the subtask set. This operation for tracing the execution of the third main task may be executed between operations S310 and S320 or subsequent to operation S320.
[0087] Here, the third tracking task may be a task that performs the same function as the first or second tracking task described above. Additionally, the temporary subtask may be a temporary task for waiting for a response to an API.
[0088] Additionally, the operation for tracing the execution of the third main task may further include an operation for inserting a temporary tracing task for maintaining the third tracing task in the main task set based on the execution of the temporary subtask, and inserting a third subtask for recording the completion of tracing of the third tracing task in the subtask set.
[0089] Here, the temporary tracing task may be a task for maintaining the tracing status of the third main task. This temporary tracing task may be implemented, for example, with code such as "setTrace(.tracing)". Since the third main task regarding a network connection request may be followed by a fourth main task regarding display on the user terminal (120), maintaining the tracing status of the third main task may be desirable. Furthermore, the third subtask may be a task that performs the same function as the first or second subtask described above.
[0090] In addition to the method (S300) illustrated in FIG. 3, the main task set may further include a fourth main task related to display on the user terminal (120). For example, the fourth main task may be a task that changes and displays the display of the user terminal (120) following the execution of the third main task related to a network connection request.
[0091] The operation for tracing the execution of the fourth main task may include sequentially inserting a fourth tracing task for tracing the execution of the fourth main task and a fourth sub-task for recording the completion of tracing of the fourth main task into the main task set.
[0092] Here, the fourth tracking task may be a task that performs the same function as at least one of the first to third tracking tasks described above. Furthermore, the fourth sub-task may be a task that performs the same function as at least one of the first to third sub-tasks described above.
[0093] However, it should be noted that the fourth subtask, unlike the first to third subtasks, is a task included in the main task set. The fourth main task is a task that completes a series of processing related to events corresponding to user input, and the fourth subtask, which is a task that changes the tracking status of the fourth main task to "finished," can be included in the main task set. In this case, after the execution of the fourth subtask, there may be a pause ("idle" state) in the main task set, and during this time, if there is a subtask included in the remaining subtask set, that subtask can be executed.
[0094] The series of methods for tracing the first to fourth main tasks described so far are diagrammed in the drawings shown in FIGS. 5 and 6. Note that, for convenience of explanation, the execution order of one or more main tasks to be traced is omitted in the drawings of FIGS. 5 and 6.
[0095] The execution order of tasks for tracking the main task may be {first tracking task (510), second tracking task (520), third tracking task (530), idle (540), first sub-task (510a), second sub-task (520a), temporary sub-task (530a), temporary tracking task (610), fourth tracking task (620), fourth sub-task (620a), idle (630), third sub-task (610a)}.
[0096] The tracing status of the first to fourth main tasks can be switched to "tracing" by the first to fourth tracing tasks, respectively, and the tracing status of the first to fourth main tasks can be switched to "finished" by the first to fourth subtasks. The tracing statuses can be connected to each other through overlapping periods of "tracing," and thus the execution order of the first to fourth main tasks can be determined.
[0097] FIG. 4 illustrates a flowchart illustrating a method (S400) according to one embodiment of the present disclosure. The method (S400) illustrated in FIG. 4 may include a series of operations that generate error information, such as the name of the main task and the tracking status, when an error occurs in the execution of an event triggered by a user input. This will be described in detail below with reference to FIG. 4.
[0098] If an error occurs in the execution of an event corresponding to a user's input, error information including the name of the first main task and the execution status of the first tracking task, and the name of the second main task and the execution status of the second tracking task may be generated (S410).
[0099] Event execution errors may include, for example, logic errors, page transition errors, response errors to APIs, or display errors on user terminals (120).
[0100] If the tracking status of the first and second main tasks, which can be confirmed in the error information, is “waiting,” then in this operation (S410), it can be determined that the error is caused by a task executed before the first and second main tasks.
[0101] Additionally, if the tracing status of the first main task is “tracing” and the tracing status of the second main task is “waiting”, in this operation (S410), it can be determined that an error occurred due to the first main task.
[0102] Additionally, if the tracing status of the first and second main tasks is "tracing," in this operation (S410), it may be determined that an error occurred due to the second main task. This may also apply when the tracing status of the first main task is "finished" and the tracing status of the second main task is "tracing."
[0103] Additionally, if the tracking status of the first and second main tasks is "finished", in this operation (S410), it can be determined that the error is caused by a task executed after the first and second main tasks.
[0104] That is, by referencing error information that includes the tracking status of the main task, the task in which the error occurred can be identified. This identification can also be applied when there are three or more main tasks.
[0105] In addition, the present method (S400) may further include an operation of transmitting error information to an administrator terminal (not shown) following the present operation (S410).
[0106] According to Figures 3 through 6 described so far, multiple tasks can be dynamically linked in response to events triggered by user input. This linking is possible by utilizing overlapping tracking states as connection points. This allows for dynamic exploration of task execution order, or in other words, task call relationships, even in cases where libraries of code managed by different entities are distributed and it is difficult to accurately determine the call relationships among codes.
[0107] Additionally, by generating the task's tracking status as error information at the time of error occurrence, the task in which the error occurred can be identified.
[0108] In the flowcharts of this disclosure, the operations of the method or algorithm are described in a sequential order, but may also be performed in any order that can be arbitrarily combined. The description of the flowcharts of this disclosure does not exclude variations or modifications to the method or algorithm, and does not imply that any operation is essential or desirable. In one embodiment, at least some of the operations may be performed in parallel, iteratively, or heuristically. In another embodiment, at least some of the operations may be omitted, or other operations may be added.
[0109] Various embodiments of the present disclosure may be implemented as software on a machine-readable storage medium (MRSM) that can be read by a computing device. The software may be software for implementing various embodiments of the present disclosure. The software may be inferred from various embodiments of the present disclosure by programmers skilled in the art to which the present disclosure pertains. For example, the software may be a computer program including instructions that can be read by a computing device. A computing device is a device capable of operating according to instructions called from a storage medium, and may be interchangeably referred to as, for example, an electronic device. In one embodiment, a processor of the computing device may execute the called instructions, causing components of the computing device to perform functions corresponding to the instructions. A storage medium may refer to any type of recording medium that stores information that can be read by a device. The storage medium may include, for example, ROM, RAM, CD-ROM, magnetic tape, floppy disks, or optical information storage devices. In one embodiment, the storage medium may be implemented in a distributed form, such as in a network-connected computer system. In this case, the software may be distributed, stored, and executed in the computer system. In another embodiment, the storage medium may be a non-transitory storage medium. A non-transitory storage medium refers to a medium that exists regardless of whether information is stored semi-permanently or temporarily, and does not contain signals that are propagated transitorily.
[0110] While the technical concepts of the present disclosure have been described through various embodiments, the technical concepts of the present disclosure encompass various substitutions, modifications, and variations that can be made within the scope understandable to those of ordinary skill in the art to which the present disclosure pertains. Furthermore, it should be understood that such substitutions, modifications, and variations are encompassed within the scope of the appended claims.
Claims
1. In a method performed by an electronic device, A step of executing a first main task of a main task set corresponding to the input based on a user input, inserting a first tracking task for tracking execution of the first main task into the main task set, and inserting a first subtask for recording completion of tracking of the first main task into a subtask set that is executed when execution of one or more main tasks included in the main task set is completely completed; A step of executing a second main task included in the main task set and called by the first main task, inserting a second tracking task for tracking the execution of the second main task into the main task set, and inserting a second subtask for recording the completion of tracking of the second main task into the subtask set; and A method comprising a step of determining an execution order of one or more main tasks included in the main task set based on the completion of execution of one or more subtasks included in the subtask set.
2. In paragraph 1, The step of inserting the first tracking task into the main task set and inserting the first subtask into the subtask set is: A method comprising the step of generating an event corresponding to the above input.
3. In paragraph 1, The step of inserting the first tracking task into the main task set and inserting the first subtask into the subtask set is: A method comprising the step of inserting the first subtask into the subtask set after a predetermined period of time has elapsed after inserting the first tracking task into the main task set.
4. In paragraph 1, The above main task set is: Further comprising a third main task for a network connection request with the user terminal of the above user, A method further comprising the steps of inserting a third tracking task for tracing the execution of the third main task into the main task set, and inserting a temporary sub-task for recording the execution of the third main task into the sub-task set.
5. In paragraph 4, A method further comprising the steps of: inserting a temporary tracking task for maintaining the third tracking task into the main task set based on the execution of the temporary subtask; and inserting a third subtask for recording the completion of tracking of the third tracking task into the subtask set.
6. In paragraph 4, The above main task set is: Further comprising a fourth main task regarding display on the user terminal, A method further comprising the step of sequentially inserting into the main task set a fourth tracing task for tracing the execution of the fourth main task and a fourth sub-task for recording the completion of tracing of the fourth main task.
7. In paragraph 1, A method further comprising a step of generating error information including the name of the first main task and the execution status of the first tracking task and the name of the second main task and the execution status of the second tracking task, when an error occurs in the execution of an event corresponding to the input.
8. In paragraph 1, The step of determining the execution order of one or more main tasks included in the above main task set is: A method comprising a step of determining the execution order of the first main task and the second main task by using the overlapping maintenance states of the first tracking task and the second tracking task as a connection point.
9. In a non-transitory computer-readable recording medium recording a computer program to be executed by a processor, A non-transitory computer-readable recording medium configured to cause the processor to execute a method according to any one of claims 1 to 8.
10. A communication interface configured to enable communication with the network; A processor configured to execute a computer program comprising one or more instructions; and including a memory in which the above computer program is stored, An electronic device, wherein when the computer program is executed by the processor, the processor is configured to execute a method according to any one of claims 1 to 8.
Citation Information
Patent Citations
Method and system for processing a scheduling task in device management
JP2012053882A
Controlling tasks performed by a computing system
KR1020160004335A
Client-side activity monitoring
KR1020180095646A
Real-time distributed management method for maintaining quality of synchrophasor data
KR1020240008010A
Preparing method of frozen Dongchimi starter for preparing Dongchimi containing a large amount of gamma-aminobutyric acid
KR102760937B1