<!--
   $FML: module.sgml,v 1.4 2003/04/15 14:51:36 fukachan Exp $
-->


<sect1 id="fml.command.module.hierarchy">
	<title>
	各種コマンドで使うモジュール
	</title>

<para>
&fmldevel; では、コマンドメール、makefml そして CGI が使うモジュールは
共有されています。ただし、その権限の差異によって、一般ユーザ用のモジュー
ルと管理者用のモジュールの２つに大きく分かれています。以下、これらのモ
ジュール群の構成について解説します。
</para>

<para>
FML::Command:: クラスは以下のような構成になっています。
<screen>
FML::Command		FML::Command クラス以下への入口、dispatcher
FML::Command::User	ユーザ用コマンド群
FML::Command::Admin	管理者用コマンド群
</screen>
例えば、(コマンドメールでの)ユーザ用コマンドの場合
FML::Command を経由して
FML::Command::User::コマンド
モジュールを使うことになります。
</para>

<sect2>
	<title>
	(コマンドメールでの)一般ユーザ用コマンド
	</title>

<para>
FML::Process::Command から
FML::Command 経由で
FML::Command::User::コマンド
を呼び出しています。
</para>

<para>
最終的に
FML::Command::Admin::コマンド
を使うモジュールもあります。
例えば登録と削除の実作業は
FML::Command::Admin::コマンド
内のコードが行なっています。
登録/削除の実体のコードをすべてのプログラムで共有するためです。
この場合、
FML::Command::User::コマンド
のコマンドは confirm を行なうための wrapper という位置付けになります。
</para>
</sect2>

<sect2>
	<title>
	(メールでの) adminコマンド
	</title>

<para>
FML::Process::Command から
FML::Command 経由で
FML::Command::Admin::コマンド
を呼び出しています。
</para>

</sect2>


<sect2>
	<title>
	makefml のコマンド
	</title>

<para>
FML::Process::Configure から
FML::Command 経由で
FML::Command::Admin::コマンド
を呼び出しています。
</para>

</sect2>


<sect2>
	<title>
	CGI
	</title>


<para>
FML::Process::CGI から
FML::Command 経由で
FML::Command::Admin::コマンド
を呼び出しています。
</para>

</sect2>


</sect1>
