Data processing system, data processing apparatus, and recording medium

A data processing apparatus (10) includes multiple data processors (300) that each perform a set subprocess of multiple sequential subprocesses included in a process sequence and a data distributor (210) that mediates data exchange between the multiple data processors (300) in accordance with a publish-subscribe model. An ID checker (330) determines, based on identification information assigned to received data received from the data distributor (210), whether received data is to be processed in the subprocess set to be performed by the data processor (300). A data processing executor (340) performs the set subprocess when the ID checker (330) determines that the received data is to be processed in the set subprocess. A data converter (310) assigns new identification information to data resulting from the set subprocess performed by the data processing executor (340) and transmits the data assigned with the new identification information to the data distributor (210).

CROSS-REFERENCE TO RELATED APPLICATION

The present application is based on PCT filing PCT/JP2019/034086, filed Aug. 30, 2019, the entire contents of which are incorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates to a data processing system, a data processing apparatus, a data processing method, and a program.

BACKGROUND ART

Patent Literature 1 describes an information processing system including a data processing apparatus. The data processing apparatus performs predetermined processing on data transmitted by a working device serving as a data generator and transmits the processed data to another working device serving as a data user. In this information processing system, the working device as a data generator, the data processing apparatus, and the working device as a data user exchange data in accordance with a publish-subscribe model. The data processing apparatus includes a broker that mediates data exchange in accordance with the publish-subscribe model and a control flow function that performs predetermined processing on data.

The working device as a data generator publishes generated data to a predetermined channel set with a broker. The broker thus passes data to a control flow function subscribing to the channel. When the control flow function publishes processed data to another channel set with the broker, the broker passes the data to another working device subscribing to the channel. In the information processing system described in Patent Literature 1, two processors exchange data through a predetermined channel. This structure enables one-to-one data exchange between two processors.

CITATION LIST

Patent Literature

Patent Literature 1: Unexamined Japanese Patent Application Publication No. 2010-165172

SUMMARY OF INVENTION

Technical Problem

In the structure described in Patent Literature 1, multiple channels are to be set with a broker to process data in a predetermined order.FIG.15shows an example setting of multiple channels with a broker for cooperative processing between multiple processors. As illustrated, channels X and Y are set with a broker B1. A processor A2subscribes to the channel X, and a processor A3subscribes to the channel Y. When a processor A1publishes data to the channel X, the broker B1distributes the data to the processor A2. The processor A2processes data received from the channel X. When the processor A2publishes the processed data to the channel Y, the broker B1distributes the data to the processor A3. The processor A3processes data received from the channel Y. The multiple channels set with the broker B1in this manner enables data distribution to the processors in a predetermined order.

A change in the data processing sequence causes a change in the setting with the broker, such as addition or deletion of channels. This change also causes a change in the setting with each processor, such as the channel subscribed to by the processor or to which the processor publishes data. For example, the process sequence may be changed as shown inFIG.16, in which a processor A4newly added processes data processed by the processor A2, and the processed data is then provided to the processor A3.

In this case, the setting is to be changed in the manner described below. A channel Z is newly added to the broker B1. The setting with the processor A4is changed to subscribe to the channel Y. The setting with the processor A4is also changed to publish processed data to the channel Z. The channel subscribed to by the processor A3is changed to the channel Y. In this manner, a change in the data processing sequence causes a change in the channel setting with the broker and a change in the setting with each processor, such as the channel subscribed to by the processor or to which the processor publishes data. In the structure described in Patent Literature 1, the setting change increases the workload of the user.

In response to the above issue, an objective of the present disclosure is to provide a simple messaging system using a publish-subscribe model in which multiple processors sequentially process data in cooperation with one another.

Solution to Problem

To achieve the above objective, a data processing system according to an aspect of the present disclosure includes a plurality of data processing means each for performing a set subprocess of a plurality of sequential subprocesses included in a process sequence, and distribution means for mediating data exchange between the plurality of data processing means in accordance with a publish-subscribe model. Each of the plurality of data processing means includes determination means for determining, based on identification information assigned to received data received from the distribution means, whether the received data is to be processed in the subprocess set to be performed by the data processing means, process execution means for performing the set subprocess when the determination means determines that the received data is to be processed in the set subprocess, and transmission means for assigning new identification information to data resulting from the set subprocess performed by the process execution means and for transmitting the data assigned with the new identification information to the distribution means.

Advantageous Effects of Invention

A data processing system according to the above aspect of the present disclosure includes data processing means for determining, based on identification information assigned to received data received from distribution means, whether the data is to be processed in a subprocess set to be performed by the data processing means. When determining that the received data is to be processed in the subprocess, the data processing means performs the subprocess on the received data, assigns new identification information to data resulting from the subprocess, and transmits the data assigned with the new identification information to the distribution means. This simple structure allows multiple processors to sequentially process data in cooperation with one another in messaging using a publish-subscribe model.

DESCRIPTION OF EMBODIMENTS

Embodiments

A data processing apparatus according to an embodiment of the present disclosure will now be described in detail with reference to the drawings.

As shown inFIG.1, for example, a data processing apparatus10according to the embodiment is connected to devices61and62with a network701to form a data processing system1. In the embodiment, the data processing apparatus10is, for example, an industrial personal computer (IPC) installed in the same factory as the devices61and62. The devices61and62are, for example, factory automation (FA) devices such as actuators and robots. The devices61and62may be hereafter referred to as devices60. The network701complies with, for example, field network standards.

The data processing apparatus10collects data from the devices60. The data is acquired by sensors included in the devices60. Examples of the sensors included in the devices60include a vibration sensor, a temperature sensor, a pressure sensor, and a flow rate sensor. The data processing apparatus10collects, for example, data from the devices60and performs various data processing operations, such as data processing or analysis, on the collected data.

The data processing apparatus10includes multiple processors that perform a series of processes in cooperation with one another. In the example shown inFIG.2, the data processing apparatus10performs a process sequence P100including sequential subprocesses P101to P105defined by a user.

The process sequence P100includes subprocesses performed on data output from the devices60. The arrows inFIG.2indicate data transmission. For example, the subprocess P101is a process of collecting data from the devices60, and the subprocess P105is a process of outputting data. For example, data collected from the devices60in the subprocess P101is processed in the subprocess P102. The data processed in the subprocess P102is processed in the subprocess P103and then in the subprocess P104. The processed data is then transmitted to the subprocess P105for output to, for example, a device external to the data processing apparatus10.

The data processing apparatus10includes setting data indicating the defined details about the process sequence and performs processing in accordance with the defined process sequence setting. More specifically, the processors included in the data processing apparatus10perform predetermined subprocesses in a predetermined order.

In the embodiment, the processors in the data processing apparatus10that perform the subprocesses exchange data in accordance with a publish-subscribe model. The functions of each processor are implemented by, for example, a corresponding application.

In the publish-subscribe model, an application that transmits messages is referred to as a publisher, and an application that receives messages is referred to as a subscriber. An application that mediates data exchange between the publisher and the subscriber is referred to as a broker.

FIG.3shows example messaging using a publish-subscribe model. As illustrated, a publisher P1generates a message M1and transmits the generated message M1to a broker B1. Transmission of the message M1from the publisher P1may be referred to as publication. Subscribers S1, S2, and S3request subscription of messages from the broker B1. Reception of published messages by the subscribers S1, S2, and S3may be referred to as subscription. The broker B1transmits the message M1published by the publisher P1to the subscribers S1, S2, and S3requesting subscription of the message M1.

In the messaging using the publish-subscribe model, the publisher P1transmits the message M1without specifying the receiver of the message M1. The subscribers S1, S2, and S3receive the message M1without specifying the transmitter of the message M1. The messaging using the publish-subscribe model reduces the degree of coupling between the publisher P1and each of the subscribers S1, S2, and S3, while increasing system scalability. In contrast, a message transmitter cannot transmit a message to a specific receiver alone, and a message receiver cannot specify a message transmitter.

As described above, the multiple processors in the data processing apparatus10sequentially perform the subprocesses. The processors are to perform the subprocesses in the order defined with the process sequence. In the embodiment, data exchanged between the processors in the data processing apparatus10is assigned with identification information for identifying the progress of the process sequence. More specifically, the identification information specifies the preceding subprocess performed on the data. Each processor determines based on the identification information whether the received data is to be processed by the processor.

As shown inFIG.4, the data processing apparatus10includes, as hardware components, a central processing unit (CPU)11that centrally controls the data processing apparatus10, a memory12that stores various programs and data, a communication interface13that communicates with other devices through the network701, and an input device14and an output device15serving as user interfaces. The memory12, the communication interface13, the input device14, and the output device15are connected to the CPU11with a bus19to communicate with the CPU11.

The CPU11executes programs stored in the memory12to perform the process described later.

The memory12includes a volatile memory and a nonvolatile memory.

The memory12stores programs for implementing various functions of the data processing apparatus10. The memory12is used as a work memory for the CPU11.

The communication interface13includes a network interface circuit and communicates with the devices60through the network701under the control of the CPU11.

The input device14includes, for example, an input key and a pointing device. The input device14receives operation inputs from a user and outputs signals indicating the operation inputs from the user to the CPU11. The user is, for example, a manager of the data processing apparatus10.

The output device15includes, for example, a display and a speaker. The output device15displays images based on the signals provided from the CPU11on the display. The output device15outputs, from the speaker, sounds based on the signals provided from the CPU11.

As shown inFIG.5, the data processing apparatus10includes, as functional components, a data collector100that collects data from the devices60, an execution controller200that controls the process sequence, data processors300that perform the subprocesses, a user interface400that provides and receives information to and from a user, a receiver500that receives the setting of the process sequence, and a storage600that stores various items of data. InFIG.5, the arrows indicate the directions of data or signal flow between the components in the data processing apparatus10.

The data collector100collects data from the devices60. The data is acquired by sensors included in the devices60. The data collector100collects, for example, specified data from a specified target at specified collection intervals. The data collector100provides the collected data to the execution controller200. The functions of the data collector100are mainly implemented by the CPU11and the communication interface13shown inFIG.4. The data collector100is an example of collection means in an aspect of the present disclosure.

The execution controller200shown inFIG.5includes a data distributor210and a sequence controller220. The functions of the execution controller200are mainly implemented by the CPU11shown inFIG.4.

The data distributor210shown inFIG.5operates as a broker in the publish-subscribe model and mediates data exchange between the data processors300. The sequence controller220described below operates as a publisher. Each data processor300operates as both a publisher and a subscriber. The data distributor210distributes a message including data received from the sequence controller220to the data processors300. The data received by the data distributor210from the sequence controller220is collected by the data collector100from the devices60. The data distributor210also distributes a message including data received from a data processor300and processed in a subprocess to another data processor300. When determining based on the identification information assigned to the data received from each data processor300that all the subprocesses are complete, the data distributor210outputs the data to the sequence controller220. The data distributor210is an example of data distribution means in an aspect of the present disclosure.

The sequence controller220outputs the message including data provided from the data collector100to the data distributor210in accordance with the defined setting of the process sequence. The process sequence is set in the manner described below. The receiver500(described later) receives the process sequence setting from a user and notifies the sequence controller220of the process sequence setting. The sequence controller220stores data indicating the notified process sequence setting into the storage600. When receiving a message including data processed in the subprocesses performed by all the data processors300from the data distributor210, the sequence controller220outputs, for example, an instruction based on the processing result to the devices60. In another example, the sequence controller220may activate a predetermined application depending on the processing result. In still another example, when receiving a message including data processed in the subprocesses performed by all the data processors300from the data distributor210, the sequence controller220may provide the processing result indicated by the received data to a user. The sequence controller220is an example of sequence control means in an aspect of the present disclosure.

Each data processor300performs, on data included in a message received from the data distributor210, a subprocess set to be performed by the data processor300, and transmits a message including the data processed in the subprocess to the data distributor210. The data received from the data distributor210is an example of received data in an aspect of the present disclosure. In the example shown inFIG.5, the data processors300include data processors301,302, and303. For example, the data processor301performs a process1. The data processor302performs a process2. The data processor303analyzes data processed by the data processor302. The processes1and2are preprocesses to be performed before data analysis.

The specific functions of the data processors300will now be described.

Each data processor300includes a data converter310, an ID storage320, an ID checker330, and a data processing executor340. The functions of the data processor300are mainly implemented by the CPU11and the memory12shown inFIG.4. Each data processor300is an example of data processing means in an aspect of the present disclosure.

Each data converter310shown inFIG.5operates as an interface that transmits and receives messages to and from the data distributor210. The data converter310converts data included in the message received from the data distributor210into a form processible by the data processing executor340(described later).

As shown inFIG.7, for example, the message received by the data converter310from the data distributor210includes a header and the text of the message. The text of the message includes data to be processed by the data processor300. The header includes an ID. As described above, data exchanged between the data processors300in the data processing apparatus10is assigned with identification information for identifying the progress of the process sequence. The ID functions as the identification information for identifying the progress of the process sequence. The ID may be any value, for example, a numerical value sequentially incremented from an initial value, or may include a numerical value and a character string.

When receiving a message from the data distributor210, the data converter310shown inFIG.5separates the received message into the text of the message and a header. The data converter310extracts the ID from the header and outputs the ID to the ID checker330. The data converter310also outputs the text of the message to the data processing executor340.

When receiving processed data from the data processing executor340, the data converter310generates a message. More specifically, the data converter310places the processed data into the text of the message and the ID in the current process into the header to generate a message. The current process ID is notified to the data converter310from the ID checker330(described later). The data converter310transmits the generated message to the data distributor210. The data converter310is an example of transmission means in an aspect of the present disclosure.

The ID storage320stores the association between the ID in the current process in which the data processing executor340performs the subprocess and the ID assigned to the process preceding the current process. The current process ID specifies the subprocess to be performed by the data processing executor340. The preceding process ID specifies the subprocess set to be performed on data to be processed in the subprocess performed by the data processing executor340immediately before the subprocess. For example, as shown inFIG.6, the ID storage320stores data associating the ID indicating the preceding process with the ID indicating the current process. The ID assigned to data received by one data processor300is assigned by another data processor300that has performed the preceding subprocess. Data assigned with the preceding process ID indicates that the data is to be processed in the subprocess of the data processor300receiving the data.

The data processor300that performs a first subprocess performs the subprocess on unprocessed data. More specifically, this data is provided from the data collector100to the data distributor210through the sequence controller220. In this case, the ID storage320included in the data processor300that performs the first subprocess stores, as a preceding process ID, an ID indicating that the data has yet to be processed in any subprocess. The sequence controller220assigns this ID to the data. The preceding process ID is an example of first identification information in an aspect of the present disclosure. The current process ID is an example of second identification information in an aspect of the present disclosure. The ID storage320is an example of storage means in an aspect of the present disclosure.

The ID checker330determines whether the ID output from the data converter310is stored in the ID storage320. More specifically, when the ID included in the header matches the preceding process ID stored in the ID storage320, the ID checker330determines that the data included in the message received from the data distributor210is processed in the preceding subprocess and thus is to be processed. The ID checker330notifies the data processing executor340of the determination result. The ID checker330also notifies the data converter310of the current process ID.

When the ID included in the header is not stored in the ID storage320as the preceding process ID, the ID checker330determines that the data included in the message received from the data distributor210is not to be processed. The ID checker330notifies the data processing executor340of the determination result. The ID checker330is an example of determination means in an aspect of the present disclosure.

When the result notified from the ID checker330indicates that the text of the message output from the data converter310is to be processed, the data processing executor340performs a preset subprocess on the text of the message. For example, the data processing executor340in the data processor301performs the process1. The data processing executor340outputs the processed data to the data converter310. When the result notified from the ID checker330indicates that the text of the message output from the data converter310is not to be processed, the data processing executor340abandons the text of the message. The data processing executor340is an example of data processing execution means in an aspect of the present disclosure.

The user interface400functions as a user interface. For example, the user interface400notifies the receiver500of the setting of the process sequence input by a user. The user interface400also presents information provided from the execution controller200through the receiver500to the user. The functions of the user interface400are mainly implemented by the input device14and the output device15shown inFIG.4.

The receiver500shown inFIG.5receives the setting of the process sequence through the user interface400and notifies the execution controller200of the process sequence setting. The receiver500outputs information provided from the execution controller200to the user interface400. The functions of the receiver500are mainly implemented by the CPU11shown inFIG.4.

The storage600shown inFIG.5stores data used for the operations of the data processing apparatus10, including the setting data about the process sequence. The functions of the storage600are mainly implemented by the memory12shown inFIG.4.

The operation of each data processor300receiving a message from the data distributor210will now be described. First, when receiving data from the data collector100, the sequence controller220places the received data into the text of the message and places the ID indicating that the data has yet to be processed in any subprocess into the header to generate a message shown inFIG.7. As shown inFIG.5, the sequence controller220transmits the generated message to the data distributor210. When receiving the message from the sequence controller220, the data distributor210distributes the message to each data processor300serving as a subscriber.

As shown inFIG.8, when receiving a message from the data distributor210(Yes in step S11), the data converter310separates the received message into the text of the message and the header (step S12). The data converter310extracts the ID from the header (step S13) and outputs the ID to the ID checker330. The data converter310also outputs the text of the message to the data processing executor340.

The ID checker330determines whether the ID output from the data converter310is stored in the ID storage320(step S14). When the ID is stored in the ID storage320as the preceding process ID (Yes in step S14), the ID checker330notifies the data processing executor340that the message received from the data distributor210is to be processed. In this case, the data processing executor340performs a subprocess on data included in the text of the message output from the data converter310(step S15). The data processing executor340outputs the processed data to the data converter310.

The data converter310assigns the current process ID to the processed data output from the data processing executor340(step S16). More specifically, the data converter310places the processed data output from the data processing executor340into the text of the message and places the current process ID stored in the ID storage320into the header to generate a message. The data converter310transmits the generated message to the data distributor210(step S17). When receiving the message from a data processor300, the data distributor210distributes the message to another data processor300.

In step S14, when determining that the ID is not stored in the ID storage320as the preceding process ID (No in step S14), the ID checker330notifies the data processing executor340of the result. In this case, the data processing executor340abandons the data (step S18). The data converter310then performs the process in step S11again. Each data processor300operates in this manner.

An example data flow in the data processing apparatus10according to the embodiment will now be described. In the example, the ID P101indicates the process1performed by the data processor301, the ID P102indicates the process2performed by the data processor302, and the ID P103indicates the analysis performed by the data processor303. The ID P000indicates that no subprocess has been performed. The collected data is defined to be processed in the process1, the process2, and the analysis in this order. The sequence controller220prestores the ID indicating that no subprocess has been performed and the ID indicating the subprocess to be performed by the data processor303as the last process.

For ease of explanation, the ID storage320included in the data processor301is an ID storage320A. The ID storage320included in the data processor302is an ID storage320B. The ID storage320included in the data processor303is an ID storage320C. The ID storage320A included in the data processor301stores data shown inFIG.9A. The ID storage320B included in the data processor302stores data shown inFIG.9B. The ID storage320C included in the data processor303stores data shown inFIG.9C.

When receiving data from the data collector100, the sequence controller220assigns the ID P000to the data and outputs a message including the data to the data distributor210. Thus, as shown inFIG.10, the data distributor210distributes the data to the data processors301,302, and303(S1001).

When receiving the data assigned with the ID P000, the data processor301refers to the ID storage320A shown inFIG.9Ato determine whether the received data is to be processed. When ID P000matching the preceding process ID stored in the ID storage320A, the ID checker330in the data processor301determines that the received data is to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor301performs the process1(S1002). The data converter310in the data processor301assigns the current process ID P101stored in the ID storage320A shown inFIG.9Ato the data processed in the process1and transmits a message including the data assigned with the ID to the data distributor210(S1003).

When receiving the data assigned with the ID P000, the data processor302refers to the ID storage320B shown inFIG.9Bto determine whether the received data is to be processed. When the ID P000does not match the preceding process ID stored in the ID storage320B, the ID checker330in the data processor302determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor302abandons the data (S1004).

When receiving data assigned with the ID P000, the data processor303refers to the ID storage320C shown inFIG.9Cto determine whether the received data is to be processed. When the ID P000does not match the preceding process ID stored in the ID storage320C, the ID checker330in the data processor303determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor303abandons the data (S1005).

When receiving the data from the data processor301, the data distributor210distributes the data to the data processors301,302, and303(S1006).

When receiving data assigned with the ID P101, the data processor301refers to the ID storage320A shown inFIG.9Ato determine whether the received data is to be processed. When the ID P101does not match the preceding process ID stored in the ID storage320A, the ID checker330in the data processor301determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor301abandons the data (S1007).

When receiving the data assigned with the ID P101, the data processor302refers to the ID storage320B shown inFIG.9Bto determine whether the received data is to be processed. When the ID P101matching the preceding process ID stored in the ID storage320B, the ID checker330in the data processor302determines that the received data is to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor302performs the process2(S1008). The data converter310in the data processor302assigns the current process ID P102stored in the ID storage320B shown inFIG.9Bto the data processed in the process2and transmits a message including data assigned with the ID to the data distributor210(S1009).

When receiving the data assigned with the ID P101, the data processor303refers to the ID storage320C shown inFIG.9Cto determine whether the received data is to be processed. When the ID P101does not match the preceding process ID stored in the ID storage320C, the ID checker330in the data processor303determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor303abandons the data (S1010).

When receiving the data from the data processor302, the data distributor210distributes the data to the data processors301,302, and303(S1011).

When receiving the data assigned with the ID P102, the data processor301refers to the ID storage320A shown inFIG.9Ato determine whether the received data is to be processed. When the ID P102does not match the preceding process ID stored in the ID storage320A, the ID checker330in the data processor301determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor301abandons the data (S1012).

When receiving the data assigned with the ID P102, the data processor302refers to the ID storage320B shown inFIG.9Bto determine whether the received data is to be processed. When the ID P102does not match the preceding process ID stored in the ID storage320B, the ID checker330in the data processor302determines that the received data is not to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor302abandons the data (S1013).

When receiving the data assigned with the ID P102, the data processor303refers to the ID storage320C shown inFIG.9Cto determine whether the received data is to be processed. When the ID P102matching the preceding process ID stored in the ID storage320C, the ID checker330in the data processor303determines that the received data is to be processed. Thus, as shown inFIG.10, the data processing executor340in the data processor303performs an analysis (S1014).

The analysis may use a predetermined number of data pieces. In this case, the data processor303may accumulate the predetermined number of data pieces processed by the data processor302before performing the analysis.

The data converter310in the data processor303assigns the current process ID P103stored in the ID storage320C shown inFIG.9Cto the data indicating the analysis result and transmits a message including the data assigned with the ID to the data distributor210(S1015).

When the data distributor210receiving the data assigned with the ID P103indicating the last process performed by the data processors300, the sequence controller220outputs an image indicating the analysis result to the user interface400through the receiver500. The user can thus view the analysis result. The embodiment has the above structure.

As described above, each data processor300in the data processing apparatus10determines whether data is to be processed in the subprocess depending on whether the ID storage320stores the ID assigned to the data received from the data distributor210as the ID indicating the preceding process. When determining based on the ID assigned to the data that the data is to be processed in the subprocess, each data processor300performs the subprocess and transmits the data assigned with the ID indicating the current process to the data distributor210. When determining that the data is not to be processed in the subprocess, the data processor300does not perform the subprocess.

In the manner described above, each data processor300can determine, based on the ID assigned to the data, whether the data is to be processed. Thus, multiple processors can sequentially process data in cooperation with one another in the publish-subscribe model-based messaging in which data transmitters are unspecified. In the embodiment, each data processor300assigns the ID indicating the identification information for identifying the progress of the process sequence to the processed data. This simple structure enables data processing in accordance with the defined process sequence.

Each data processor300processes data in accordance with the process sequence defined based on the ID. Thus, the data distributor210that operates as a broker simply distributes data. For example, unlike in the structure described in Patent Literature 1, multiple channels are not set with the broker to control the order of data distribution. Any change in the process sequence simply causes a change in the setting with the data processor300for adjustment to the resultant process sequence without any change in the setting with the data distributor210that operates as a broker. For example, an application that operates on a server provided by an external system provider may serve as the data distributor210that operates as a broker. In this case, the broker may distribute the published data to all the data processors300to easily adjust the data processors300to, for example, a change in the process order when a data processor300is added or deleted.

In the embodiment, each data processor300performs a single subprocess, but each data processor300may perform two or more subprocesses. In this case, as shown inFIG.11, the ID storage320included in the data processor300stores data defining the subprocess for each combination of the preceding process and the current process.

In this case, when the ID included in the header matches any of the preceding process IDs stored in the ID storage320shown inFIG.11, the ID checker330determines that the data included in the message received from the data distributor210is to be processed. The ID checker330notifies the data processing executor340of the subprocess associated with the preceding process ID. Thus, the data processing executor340performs the notified subprocess. The ID checker330notifies the data converter310of the corresponding current process ID. The data converter310adds the current process ID to the data processed in the subprocess performed by the data processing executor340and transmits the data to the data distributor210.

For example, when the ID P004is included in the header, the ID checker330notifies the data processing executor340of the corresponding process5. Thus, the data processing executor340performs the process5. The data converter310assigns the ID P005to the processed data for transmission to the data distributor210.

When the ID included in the header does not match any of the preceding process IDs stored in the ID storage320shown inFIG.11, the ID checker330determines that the data received from the data distributor210is not to be processed and notifies the data processing executor340of the determination result. Thus, the data processing executor340abandons the data.

In the embodiment, each data processor300separates the header from the message to delete the preceding process ID from the message and adds the current process ID to the data processed in the subprocess. However, the structure is not limited to this example.

The data processor300may place the current process ID into the header without deleting the preceding process ID from the message. Thus, a new ID is additionally assigned to the header for every subprocess performed by the data processor300. The data processor300may use, as the preceding process ID, the ID assigned last time among the IDs included in the header of the received message to determine whether the data is to be processed. In this structure, for example, the sequence controller220can determine whether the data processed in the last subprocess has been processed in all the processes defined in the process sequence.

In the embodiment, the process sequence shown inFIG.2has been described, but the process sequence is not limited to this example.FIG.12shows another example of the process sequence. In a process sequence P200shown inFIG.12, data collected in the subprocess P101assigned with the ID P001is passed to the subprocess P102.

In the subprocess P102, the data assigned with the ID P001is processed in the subprocess P102to be assigned with the ID P011. The resultant data is then passed to the subprocesses P103and P107.

In the subprocess P103, the data assigned with the ID P011is processed in the subprocess P103to be assigned with the ID P012and passed to the subprocess P104. In the subprocess P107, the data assigned with the ID P011is processed in the subprocess P107to be assigned with the ID P031and passed to the subprocess P104.

In the subprocess P104, the data assigned with the ID P012is processed in the subprocess P104to be assigned with the ID P013and output to the data distributor210. The data assigned with the ID P031is processed in the subprocess P104to be assigned with the ID P032and output to the data distributor210.

In the embodiment and Modification 1, each ID indicates a different process, but the structure is not limited to this example. For example, the processes may be performed as shown inFIG.13. In the illustrated example, the arrows indicate the order in which the subprocesses are performed. In Modification 4, the ID is allocated to each arrow connecting the processes.

In this example, ID1is allocated to an arrow connecting the data process1to the data process3. The data output from the data process1is assigned with ID1. The ID storage320in the data processor300that performs the data process3stores information defining that the data assigned with ID1is to be processed in the data process3. When receiving the data assigned with ID1, the ID checker330in the data processor300that performs the data process3determines based on the information stored in the ID storage320that the received data has been passed from the data process1to the data process3. Thus, the ID checker330determines that the data process3is to be performed on the data. In this case, the data processing executor340performs the data process3on the data. When the ID assigned to the received data is other than ID1, the ID checker330in the data processor300that performs the data process3determines that the data is not to be processed. In this case, the data processing executor340abandons the data.

ID2is allocated to an arrow connecting the data process1to the data process4. ID3is allocated to an arrow connecting the data process2to the data process4.

The ID storage320in the data processor300that performs the data process4stores information defining that data assigned with ID2and data assigned with ID3are to be processed in the data process4. When receiving data assigned with ID2or ID3, the ID checker330in the data processor300that performs the data process4determines based on the information stored in the ID storage320that the data is to be processed in the data process4. In this case, the data processing executor340performs the data process4on the data. When the ID assigned to the received data is none of ID2and ID3, the ID checker330in the data processor300that performs the data process4determines that the data is not to be processed. Thus, the data processing executor340abandons the data.

As described above, the ID may specify that the data has been passed from the preceding subprocess to the subsequent subprocess.

The data processing apparatus10may include more than one data collector100. The data processing apparatus10may include two data processors300or four or more data processors300instead of three data processors300.

In the embodiment, the data processing apparatus10includes the data collector100. However, for example, another apparatus connected to the data processing apparatus10with a network may function as the data collector100. In this case, the data processing apparatus10receives, from the other apparatus, the data collected from the devices60by the other apparatus.

In another example, each data processor300may be partly or entirely installed in another apparatus connected to the data processing apparatus10with a network. The data distributor210that operates as a broker may be installed in another apparatus connected to the data processing apparatus10with a network. For example, an application that operates on a server provided by an external system provider may function as a broker. A service on a cloud may function as a broker.

In the embodiment, no topic is set with the broker, but a topic may be set with the broker. The topic indicates the subject of the information included in a message published by a publisher. The publisher can specify a topic to publish a message. A subscriber specifies a topic to request subscription of a message from a broker. The broker transmits the message published by the publisher to a subscriber subscribing to the topic.

For example, the data processing apparatus10includes data collectors101and102. As shown inFIG.14, the sequence controller220receives data from the data collectors101and102. Topics T1and T2are set with the data distributor210serving as a broker. The data processor301subscribes to the topics T1and T2, and the data processor302subscribes to the topic T2.

For example, the sequence controller220publishes a message M1including data provided from the data collector101to the topic T1and publishes a message M2including data provided from the data collector102to the topic T2. The sequence controller220assigns an ID to data included in each message. Thus, the data distributor210distributes, from the sequence controller220, the message M1published to the topic T1to the data processor301and the message M2published to the topic T2to each of the data processors301and302. The data processors301and302may each perform the subprocess based on the ID assigned to the data included in the received message.

Data may be stored into the ID storage320in each data processor300in any manner. For example, a user may register data in the ID storage320in each data processor300with the storage600in the data processing apparatus10through the user interface400. In this case, the data processor300may read data to be used from the storage600after being activated. In another example, when the execution controller200activates the data processor300, the execution controller200may specify data for a parameter provided to the data processor300. In another example, the execution controller200may generate an ID stored in the ID storage320in accordance with the defined setting of the process sequence and provide the data about the generated ID to the data processor300.

In the example shown inFIG.10, a single piece of data is exchanged between the data processors300. Instead, the data collector100may collect data pieces at short intervals and provide the collected data pieces to the sequence controller220. In this case, for identification of individual data pieces, for example, the sequence controller220may assign, to each data piece, an ID that is a value including a combination of information of time at which the data piece is received from the data collector100and an ID indicating that no subprocess is performed on the data piece. For example, the sequence controller220receives data at 9:03:15. In this case, the sequence controller220may assign an ID assigned to 090315_P000to the data. The data processor300may determine whether the data is to be processed based on a portion excluding the time information, or based on P000in this case.

In the embodiment, the data collector100that collects data does not operate as a publisher. However, the data collector100may also operate as a publisher. In this case, the data collector100may publish a message including data to the data distributor210instead of transmitting data to the sequence controller220.

Examples of a non-transitory recording medium that records the above programs include a non-transitory computer-readable recording medium, such as a magnetic disk, an optical disk, a magneto-optical disk, a flash memory, a semiconductor memory, and magnetic tape.

REFERENCE SIGNS LIST