JP2006235845A - Variable transaction processor for web system - Google Patents
Variable transaction processor for web system Download PDFInfo
- Publication number
- JP2006235845A JP2006235845A JP2005047511A JP2005047511A JP2006235845A JP 2006235845 A JP2006235845 A JP 2006235845A JP 2005047511 A JP2005047511 A JP 2005047511A JP 2005047511 A JP2005047511 A JP 2005047511A JP 2006235845 A JP2006235845 A JP 2006235845A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- application process
- processing
- client terminal
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 93
- 230000008569 process Effects 0.000 claims abstract description 84
- 230000010365 information processing Effects 0.000 abstract description 2
- 230000007246 mechanism Effects 0.000 description 18
- 230000005540 biological transmission Effects 0.000 description 14
- 230000004044 response Effects 0.000 description 14
- 238000012544 monitoring process Methods 0.000 description 11
- 230000004913 activation Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
Images
Abstract
Description
本発明は、マルチプロセスで動作するWEBサーバ上で可変量のトランザクションを実行ならしめるトランザクション処理装置に関するものである。 The present invention relates to a transaction processing apparatus for executing a variable amount of transactions on a WEB server operating in a multi-process.
従来、マルチプロセスで動作するクライアント・サーバシステムにおいて、トランザクションを実行する方法として、例えば、下記特許文献1に記載のものが知られている。
下記特許文献1に記載のものは、サーバ上(WEBサーバを包含する)のアプリケーションプロセスによって作成されたステートフルオブジェクトを当該アプリケーションプロセス上で常に動作させてトランザクションを実行する方法に関するものである。
これは、ステートフルオブジェクトが、セション管理なしに同一のアプリケーションプロセス上でトランザクションが実行できる方法であり、プロセスIDをステートフルオブジェクトのオブジェクトIDとして持たせ、その情報をクライアントオブジェクト中に返却しておき、クライアントはそのオブジェクトIDを用いてトランザクションの実行要求を出すようにすることで、サーバ側ではセション管理を行うことなくアプリケーションプロセスの識別ができるようにしたものである。
これにより、セション管理テーブルを保持する必要がなくなり、振り分けのためのディスクあるいはメモリの参照、更新等の管理機構が不要となる。また、セションが切れた場合においても、再び接続したときに同一のアプリケーションプロセスに実行要求を出す事ができる方法である。
The one described in
This is a method in which a stateful object can execute a transaction on the same application process without session management. The process ID is given as the object ID of the stateful object, and the information is returned in the client object. In this case, a transaction execution request is issued using the object ID, so that the server side can identify an application process without performing session management.
This eliminates the need to hold the session management table, and eliminates the need for a management mechanism such as reference or update of a disk or memory for distribution. Further, even when the session is cut off, an execution request can be issued to the same application process when the connection is made again.
しかしながら、上記特許文献1に記載の技術は、同一アプリケーションで取り扱うトランザクションサイズが一定であり、かつ問合せ応答型のトランザクション処理では有効であるが、アプリケーションプロセスで扱うトランザクションサイズが可変であり、かつサイズが大きかった場合においては、クライアント拠点に設置されたプロキシーサーバのセションタイムアウトによりセションが切断され易くなり、かつ再実行した場合にアプリケーションプロセスの識別は容易となるが、同一トランザクションデータが当該アプリケーションプロセスで多重走行する問題がある。
すなわち、セションが切断された際には、トランザクションはアプリケーションプロセス上で実行されたままであり、再接続後、同一トランザクションがクライアントより要求された場合、要求元が識別できないため、多重で走行してしまう問題である。また、先行で実行しているトランザクションは処理完了後に要求送受信機構に制御を戻すが、セションが切断されているため、送信先が失われた状態となる。
一方、後発で走行したトランザクションは、例えば業務データ更新の場合においては、先行トランザクションでデータ更新されたことで、エラーとなり、エラー結果をクライアントに送信することとなる。これにより、先行トランザクションでデータ更新に成功しているにも関わらず、クライアントユーザには失敗したものと認識され、不整合が生じる問題がある。
However, although the technique described in
In other words, when the session is disconnected, the transaction is still executed on the application process. If the same transaction is requested by the client after reconnection, the requester cannot be identified, and the transaction is run in multiples. It is a problem. In addition, the transaction executed in advance is returned to the request transmission / reception mechanism after the processing is completed, but the transmission destination is lost because the session is disconnected.
On the other hand, in the case of business data update, for example, in the case of business data update, an error occurs and the error result is transmitted to the client. Accordingly, there is a problem that inconsistency occurs because the client user recognizes that the data has been successfully updated in the preceding transaction, but the client user has failed.
本発明の目的は、WEBシステムを前提とした情報処理システム上のトランザクション処理において、同一セションからのトランザクションの多重走行を防止し、かつ可変量のトランザクションをセションタイムアウトを発生させることなく処理することができるWEBシステムにおける可変量トランザクション処理装置を提供することにある。 An object of the present invention is to prevent multiple running of transactions from the same session and process a variable amount of transactions without causing a session timeout in transaction processing on an information processing system based on a WEB system. An object of the present invention is to provide a variable amount transaction processing apparatus in a WEB system that can be used.
上記目的を達成するために、本発明は、可変量のトランザクションを受け付け、当該トランザクションを処理するアプリケーションプロセスに制御を渡す手段と、トランザクションを独自プロセスで非同期に処理し、処理結果をクライアント端末装置に通知する手段と、アプリケーションプロセスが不当に消滅した場合にコンソール装置に障害通知をする手段とを備えたことを特徴とする。 In order to achieve the above object, the present invention accepts a variable amount of transaction, passes control to an application process that processes the transaction, asynchronously processes the transaction in its own process, and sends the processing result to the client terminal device. It is characterized by comprising means for notifying and means for notifying the console device of a failure when the application process is unjustly extinguished.
本発明によれば、次のような効果が得られる。
(1)トランザクションの要求元であるクライアント端末装置を一意にサーバ装置上で認識し、当該要求元が生成したアプリケーションプロセス内のオブジェクト状態を管理することで、何らかの要因によりセションが切断され、再度セション接続後に同一のトランザクション実行要求があっても多重に走行することを防ぐことが可能となる。
(2)アプリケーションプロセスを非同期化し、トランザクション処理中の間は、クライアント端末装置、サーバ装置間で一定間隔で電文を送受信することで、サイズの大きいトランザクションを扱うことが問合せ応答型のユーザインタフェースで可能となることである。すなわち、可変量のトランザクションを扱うことを考えた場合に、ユーザインタフェースを変えることなく処理を実現できる。トランザクションサイズが大きい場合(サーバ装置上での処理に時間を要する場合)においても、クライアント拠点に設置されたプロキシーサーバのセションタイムアウトに制限されることがない(セションが切断されない)。
(3)非同期化したアプリケーションプロセスを別プロセスにて状態監視することで、OSからのプログラム割り込み等によるアプリケーションプロセス自身で検知できない異常終了があった場合でも不当なステータスとして情報が残ることなく、センター運用員に障害通知をすることが可能となる。
According to the present invention, the following effects can be obtained.
(1) The client terminal device that is the request source of the transaction is uniquely recognized on the server device, and the object state in the application process generated by the request source is managed. Even if there is the same transaction execution request after connection, it is possible to prevent multiple runs.
(2) While the application process is desynchronized and a transaction is being processed, an inquiry response type user interface can handle a large transaction by transmitting and receiving messages between the client terminal device and the server device at regular intervals. That is. That is, when handling a variable amount of transactions, processing can be realized without changing the user interface. Even when the transaction size is large (when processing on the server device takes time), it is not limited by the session timeout of the proxy server installed at the client site (the session is not disconnected).
(3) By monitoring the status of the desynchronized application process in a separate process, even if there is an abnormal termination that cannot be detected by the application process itself due to a program interrupt from the OS, no information remains as an invalid status. It is possible to notify the operator of trouble.
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。なお、各図面において、構成要素が同一のものについては同一の符号を使用して説明する。
(1)第1の実施形態
図1は、本発明の実施の一形態のシステム構成図である。
図1において、1、2、3はトランザクションを発行するクライアント端末装置であり、ブラウザを装備する。
4は、クライアント端末装置1〜3からのトランザクションを受け付け、処理を実行するサーバ装置である。
サーバ装置4は、要求送受信機構200、トランザクションを実行するアプリケーションプロセス310、アプリケーションプロセス320、アプリケーションプロセス330を有する。
400は要求送受信機構200、アプリケーションプロセス310、アプリケーションプロセス320、アプリケーションプロセス330間で共有する記憶装置であり、情報として、「要求元ID」、「プロセスID」、「状態(ステータス)」を有する。
アプリケーションプロセス310は、プロセスIDを有している。アプリケーションプロセス310は、クライアント端末装置1からのオブジェクト生成要求により、オブジェクトを生成する。オブジェクトは識別情報であるオブジェクトIDならびに要求元IDを含む。ここで生成されたオブジェクトがクライアント1に渡され、以降のトランザクション実行要求の際に使用される。以上のことは、アプリケーションプロセス320、330についても同様である。
Hereinafter, an embodiment for carrying out the present invention will be specifically described with reference to the drawings. In addition, in each drawing, it demonstrates using the same code | symbol about the same component.
(1) First Embodiment FIG. 1 is a system configuration diagram of an embodiment of the present invention.
In FIG. 1,
The
A
The
図2は、本実施形態に係るトランザクション実行方法の具体的な動作を説明するためのブロック図である。
図2のオブジェクト510、オブジェクト520、オブジェクト530は各々アプリケーションプロセス310、アプリケーションプロセス320、アプリケーションプロセス330にて生成されるものである。
また、クライアント端末装置にあるオブジェクト610は、サーバ装置内のオブジェクト510と同一のものである。
同様にオブジェクト620はオブジェクト520と、オブジェクト630はオブジェクト530と同一のものである。
クライアント端末装置1では、トランザクション実行に先立ちサーバ装置4に対してオブジェクト生成要求を要求元IDとともに発行する。
サーバ装置4ではこの要求を要求送受信機構200が受信する。
要求送受信機構200では要求受信後、振り分けるべきアプリケーションプロセスを決定するが、この時、記憶装置400を参照し、当該要求元IDが存在するかチェックする。存在しなければアプリケーションプロセスIDと要求元IDを記憶装置400に設定する。
FIG. 2 is a block diagram for explaining a specific operation of the transaction execution method according to the present embodiment.
The
The
Similarly, the
The
In the
After receiving the request, the request transmission /
一方、当該要求元IDが存在した場合で、かつ状態が「トランザクション実行中」であれば(これは同一クライアント端末装置から当該セションとは別セションで以前に処理要求があったことを意味する)、当該状態を「破棄」に設定し、新たにアプリケーションプロセスIDと要求元IDを設定する。
ここではアプリケーションプロセス310に要求を振り分けたことを仮定する。アプリケーションプロセス310は、オブジェクト生成要求に応じてオブジェクト510を生成する。ここで、どのアプリケーションプロセスで生成されたものかを識別できるように、自身のプロセスIDをオブジェクトIDとして設定する。その後、アプリケーションプロセス310は、要求送受信機構200を介し、生成要求元のクライアント端末装置1にオブジェクト610を送信する。
以降、クライアント端末装置1はトランザクション実行要求をオブジェクト610を使用して行う。
On the other hand, if the request source ID exists and the status is “transaction in progress” (this means that a processing request has been previously made in the session different from the session from the same client terminal device). Then, the state is set to “discard”, and an application process ID and a request source ID are newly set.
Here, it is assumed that the request is distributed to the
Thereafter, the
クライアント端末装置1はトランザクション実行要求をオブジェクト610と併せてサーバ装置4に送信する。
サーバ装置4内の要求送受信機構200は要求を受信すると、オブジェクト情報内に設定されているオブジェクトIDよりアプリケーションプロセスを決定し(ここではアプリケーションプロセス310)、制御をアプリケーションプロセス310に渡す。
制御を受けたアプリケーションプロセス310では、トランザクション処理を実行するが、同期点取得処理直前(ここでいう同期点処理とはデータベースへのトランザクションデータの実更新等を指す)に記憶装置400を参照し、当該アプリケーションプロセスIDの状態が「トランザクション実行中」であれば、同期点処理を行い、トランザクションを完結する。
一方、状態が「破棄」であればロールバック処理を行い、当該トランザクションを無効化する。すなわち、当該トランザクションのセションは何らかの要因で切断されており、戻り先がない状態になっており、かつ同一のクライアント端末装置1から別のセションで後続のトランザクション実行要求があったことを意味していることから、当該トランザクションを無効化する。
このような処理により、同一クライアント端末装置からのトランザクションの多重走行を防ぐことが可能となる。
The
When the request transmission /
The
On the other hand, if the state is “discard”, rollback processing is performed to invalidate the transaction. That is, it means that the session of the transaction has been disconnected for some reason, there is no return destination, and there has been a subsequent transaction execution request in another session from the same
Such processing can prevent multiple transactions from the same client terminal device from running.
(2)第2の実施形態
第2にクライアントより要求されたトランザクションを非同期化したアプリケーションプロセスで実行する具体的な動作について図3を参照して説明する。
図3において、5はWEBサーバであり、サーバ装置4内にある。
要求送受信機能200は、電文受信処理部210、トランザクション起動処理部220、電文応答処理部230−1、230−2、状態チェック処理部240を有する。
また、アプリケーションプロセス310は、トランザクション処理部311、処理状態更新処理部312を有する。
クライアント端末装置1から送信されたトランザクション実行要求は、トランザクションデータとともに電文受信処理部210が受信する。
電文受信処理部210では、受信した電文がトランザクション要求であった場合、制御をトランザクション起動処理部220に渡す。
(2) Second Embodiment Secondly, a specific operation for executing a transaction requested by a client using an asynchronous application process will be described with reference to FIG.
In FIG. 3, 5 is a WEB server, which is in the
The request transmission /
Further, the
The transaction execution request transmitted from the
When the received message is a transaction request, the message
トランザクション起動処理部220では、トランザクションデータ内のオブジェクトIDよりアプリケーションプロセスを決定し、当該アプリケーションプロセス310にプロセス間通信により制御を渡す。この時、トランザクションデータを記憶装置400−2を介してアプリケーションプロセス310に引き渡す。また、起動にあたっては、記憶装置400−1の状態を「トランザクション実行中」に更新する。ここからは、要求送受信機構200とアプリケーションプロセス310は非同期で処理を進める。トランザクション起動処理部220では、アプリケーションプロセスに制御を渡した後、電文応答処理部230−1に制御を渡す。
電文応答処理部230−1では、「処理中」である旨をクライアント端末装置1に応答送信する。
The transaction
The message response processing unit 230-1 transmits a response indicating that “processing is in progress” to the
クライアント端末装置1では、当該電文を受信すると、一定時間待ち状態となるが、この時、画面上において「処理中」のステータスを表示しておくことで、操作者にトランザクションが実行中であることを知らしめる。
クライアント端末装置1は、一定時間経過後、画面状態を遷移することなく、サーバ装置4に状態問合せ要求を行い、サーバ装置4内の電文受信処理部210がこれを受信し、制御を状態チェック処理部240に渡す。
状態チェック処理部240は記憶装置400−1を参照し、当該トランザクションの状態をチェックし、「トランザクション実行中」の場合は電文応答処理部230−1が「処理中」である旨をクライアント端末装置1に応答送信する。
When the
The
The status
一方、トランザクション起動処理220より制御を受けたアプリケーションプロセス310内のトランザクション処理部311は、トランザクションデータに従い、処理を行う(一般的に、ここでは業務データの更新処理等を行う)。
トランザクション処理終了後、制御を処理状態更新部312に移し、当該処理部が記憶装置400−1の状態を「終了」に更新する。
記憶装置400−1の状態が「処理中」である間は、クライアント端末装置1と要求送受信機構200が各々、状態問合せ要求ならびに状態応答送信を繰り返す。
状態チェック処理部240が記憶装置400−1の状態が「終了」となったことを検知した場合は、電文応答処理部230−2がクライアント端末装置1にその旨を応答送信し、画面上にトランザクション終了を表示する。これにより、トランザクションサイズが大きい場合でも、クライアント拠点に設置されたプロキシーサーバによるセションタイムアウトの制限を受けることなく、処理を完結できる。
On the other hand, the
After the transaction processing ends, control is transferred to the processing
While the state of the storage device 400-1 is “processing”, the
When the state
(3)第3の実施形態
トランザクションを非同期化したアプリケーションプロセスで実行する際の当該アプリケーションプロセスの監視の具体的な動作について図4を参照して説明する。
図4において、700はサーバ装置4内にあり、アプリケーションプロセス310を監視する機能を有するプロセス監視機構である。
記憶装置400−3は、アプリケーションプロセスの状態(起動中、停止中)を管理する機構を有する。
コンソール装置6はセンター運用員によって運用に係る操作が行われる入出力装置であるとともに、システムに障害が発生した場合にその旨を出力する機能を有する。
クライアント端末装置1からのトランザクション実行要求を受信した要求送受信機構200では、当該機構が有するトランザクション起動処理部220によりアプリケーションプロセス310に制御が渡り、トランザクション処理部311でトランザクションを実行する。
前述の第2の実施形態で説明した通り、この時に記憶装置400−1の状態を「トランザクション実行中」に更新する。
プロセス監視機構700では、常時一定間隔で記憶記憶装置400−1を参照し、状態が「トランザクション実行中」であり、かつ監視状態が「未」のプロセスIDを取得する(図では310)。プロセスIDを取得後、当該プロセスIDにてアプリケーションプロセスの生死の監視を一定間隔で行う。この時、記憶装置400−1の監視状態を「実行中」に更新する。
(3) Third Embodiment A specific operation of monitoring an application process when a transaction is executed by an asynchronous application process will be described with reference to FIG.
In FIG. 4,
The storage device 400-3 has a mechanism for managing the state (starting or stopping) of the application process.
The console device 6 is an input / output device in which operations related to operation are performed by a center operator, and has a function of outputting a message to the effect when a failure occurs in the system.
In the request transmission /
As described in the second embodiment, the state of the storage device 400-1 is updated to “transaction in progress” at this time.
The
次に図5で、アプリケーションプロセス310が何らかの要因により消滅(異常終了)した場合、これをプロセス監視機構700が検知し、記憶装置400−1の状態を「異常」に、監視状態を「未」に更新する。
また、記憶装置400−3のアプリケーションプロセス管理情報に当該アプリケーションプロセス(ここでは310)が使用できない旨を更新する。その後、コンソール装置6に異常通知を行い、コンソール装置6では当該通知を受信後、画面にその旨を表示する。
これにより、運用オペレータに障害の発生を知らしめることが可能となる。
Next, in FIG. 5, when the
In addition, the application process management information in the storage device 400-3 is updated to the effect that the application process (310 in this case) cannot be used. Thereafter, the console device 6 is notified of the abnormality, and the console device 6 displays the fact on the screen after receiving the notification.
As a result, it is possible to notify the operation operator of the occurrence of the failure.
1…クライアント端末装置、2…クライアント端末装置、3…クライアント端末装置、4…サーバ装置、5…WEBサーバ、6…コンソール装置、200…要求送受信機構、210…電文受信処理部、220…トランザクション起動処理部、230…電文応答処理部、240…状態チェック処理部、310…アプリケーションプロセス、320…アプリケーションプロセス、330…アプリケーションプロセス、311…トランザクション処理部、312…処理状態更新処理部、400…記憶装置、510…オブジェクト、520…オブジェクト、530…オブジェクト、610…オブジェクト、620…オブジェクト、630…オブジェクト、700…プロセス監視機構。
DESCRIPTION OF
Claims (1)
可変量のトランザクションを受け付け、当該トランザクションを処理するアプリケーションプロセスに制御を渡す手段と、トランザクションを独自プロセスで非同期に処理し、処理結果をクライアント端末装置に通知する手段と、アプリケーションプロセスが不当に消滅した場合にコンソール装置に障害通知をする手段とを備えたことを特徴とするWEBシステムにおける可変量トランザクション処理装置。 A variable amount transaction processing apparatus in a WEB system,
A means of accepting a variable amount of transaction and passing control to the application process that processes the transaction, a means of processing the transaction asynchronously with its own process, and notifying the client terminal device of the processing result A variable amount transaction processing apparatus in a WEB system, characterized by comprising means for notifying the console apparatus of a failure in a case.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005047511A JP2006235845A (en) | 2005-02-23 | 2005-02-23 | Variable transaction processor for web system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005047511A JP2006235845A (en) | 2005-02-23 | 2005-02-23 | Variable transaction processor for web system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2006235845A true JP2006235845A (en) | 2006-09-07 |
Family
ID=37043440
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2005047511A Pending JP2006235845A (en) | 2005-02-23 | 2005-02-23 | Variable transaction processor for web system |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2006235845A (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011077842A1 (en) * | 2009-12-22 | 2011-06-30 | Canon Kabushiki Kaisha | Information processing apparatus, information processing system, method for controlling information processing apparatus, and program |
-
2005
- 2005-02-23 JP JP2005047511A patent/JP2006235845A/en active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2011077842A1 (en) * | 2009-12-22 | 2011-06-30 | Canon Kabushiki Kaisha | Information processing apparatus, information processing system, method for controlling information processing apparatus, and program |
| JP2011134018A (en) * | 2009-12-22 | 2011-07-07 | Canon Inc | Information processor, information processing system, control method, and program |
| US8478839B2 (en) | 2009-12-22 | 2013-07-02 | Canon Kabushiki Kaisha | Information processing apparatus, information processing system, method for controlling information processing apparatus, and program |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111176873B (en) | Automatic micro-service offline method and device, computer equipment and storage medium | |
| CN105357038B (en) | Method and system for monitoring virtual machine cluster | |
| US7899897B2 (en) | System and program for dual agent processes and dual active server processes | |
| JP2003022258A (en) | Server backup system | |
| US10122799B2 (en) | Remote system monitor | |
| US9104486B2 (en) | Apparatuses, systems, and methods for distributed workload serialization | |
| JP5050878B2 (en) | Monitoring device, monitoring system, monitoring method and program | |
| JP2002532777A (en) | Timeout object for object-oriented real-time process control system and method of operation thereof | |
| CN119003204A (en) | Message queue processing method and device, electronic equipment and storage medium | |
| JP5558279B2 (en) | MONITORING / CONTROL SYSTEM, MONITORING / CONTROL DEVICE USED FOR SAME, AND MONITORING / CONTROL METHOD | |
| US7783742B2 (en) | Dynamic process recovery in a distributed environment | |
| JP2006268470A (en) | Asynchronous communication method | |
| JP2011159011A (en) | System and program for monitoring job | |
| JP2006235845A (en) | Variable transaction processor for web system | |
| CN115103005B (en) | Request response method, device, electronic device and storage medium | |
| US7761881B2 (en) | Event bookmarks | |
| JP2006031491A (en) | Inter-application linkage system | |
| JP7395908B2 (en) | information processing system | |
| US20150058285A1 (en) | Passive real-time order state replication and recovery | |
| JP5262492B2 (en) | Cluster system and command conflict control method | |
| JP2002297535A (en) | Method of system setting change and program thereof in transaction processing system | |
| JP2017138847A (en) | Server management system, server, server management method, and service processor | |
| JP2012185766A (en) | Computer device life/death monitoring system and method | |
| JP2017049860A (en) | Trend graph display system | |
| JP2006146292A (en) | Distributed control system and terminal program for the same system |