新プログラムの作成
プログラムを作る(コマンドライン用)
まず FML::Process:: にモジュールを用意します。
最小構成の見本としては FML::Process::Scheduler 、
最大構成としては FML::Process::Distribute
を参考にすると良いでしょう。
用意しなければいけない関数(メソッド)は
FML::Process::Flow::ProcessStart()
を見ると分かります。
FML::Process::Flow::ProcessStart()
がプロセスを駆動しているからです。
2002/07 現在、これらのメソッドが必須です。
new()
prepare()
verify_request()
run()
finish()
ダミーでもよいので、このメソッドを用意しておいて下さい。
FML::Process::Kernel
| uses-a FML::Process::{Flow,Utils} FML::Parse ...
|
A
FML::Process::○○○
uses-a FML::ほえほえ
uses-a CPAN モジュール
uses-a …
FML::Process::○○○
を用意したら、
FML::Process::Switch
を編集します。
このモジュールは、各プログラムごとに
『ロードするモジュール』
『コマンドラインオプション』
『ML名を必要とするか否か?』
などを定義してください。
編集する場所は fmlsch などの文字列を頼りにサーチすると良いでしょう。
この 2 つの準備だけで、準備は終りですです。
呼びたい名前のファイルを loader と link もしくは symlink することで
実行が可能になります。
例えば、標準のインストールでは、次のようになっています。
% ls -l /usr/local/libexec/fml
total 11
-rw-r--r-- 1 fml wheel 4044 Nov 20 00:19 Standalone.pm
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 command -> loader
drwxr-xr-x 3 root wheel 512 Nov 23 22:10 current-20011123
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 distribute -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fml.pl -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlconf -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmldoc -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlhtmlify -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlsch -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlsch.cgi -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlserv -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlthread -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 fmlthread.cgi -> loader
-rwxr-xr-x 1 fml wheel 4358 Nov 23 22:08 loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 makefml -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 makefml.cgi -> loader
lrwxr-xr-x 1 root wheel 6 Nov 23 22:10 mead -> loader
プログラムを作る( CGI 用)
CGI のプログラムは
FML::CGI::○○○
というモジュールです。
CGI 系列では次のような、オブジェクトの関係にあります。
FML::Process::Kernel
|
A
FML::Process::CGI::Kernel uses-a CGI
|
A
FML::Process::CGI
|
A
FML::CGI::○○○
CGI のプログラムの書き方も同様です。
コマンドラインのプログラムと同様に、
FML::CGI のモジュールを見本にして、
FML::CGI::○○○
を適宜用意して下さい。
FML::CGI::○○○ の注意点は、
用意するメソッドは
html_start()
html_end()
および
run_cgi_main()
run_cgi_title()
run_cgi_navigator()
run_cgi_menu()
run_cgi_command_help()
run_cgi_options()
になるという点です。
これらの組で一つの画面が構成されています。
CGI プロセスは FML::Process::CGI で駆動され、run() メソッドは
$curproc->html_start($args);
画面を作るために run_cgi_xxx() メソッド郡を呼び出す。
$curproc->html_end($args);
のように FML::CGI:: 以下のメソッド群を呼び出しているからです。
ちなみに FML::Process::CGI::Kernel 自身は、
2001/11 現在、プロセスは以下のメソッド
このため、多くの場合
FML::Process::Kernel
のメソッドは呼ばれてはいません。
からなっています。
new()
prepare()
verify_request()
run()
finish()
特に、これらを編集する必要はないでしょう。
ちなみに FML::CGI:: は run() から呼ばれています。