Create A New Program
Create A Program (CUI)
Firstly, prepare a new module in FML::Process class. See
FML::Process::Calendar as the least functional model and see
FML::Process::Distribute for the most complicated class.
See FML::Process::Flow::ProcessStart() for mandatory methods to
implement. FML::Process::Flow::ProcessStart() kicks off several
methods sequentially.
At 2002/07, these methods are mandatory.
new()
prepare()
verify_request()
run()
finish()
FML::Process::Kernel
| uses-a FML::Process::{Flow,Utils} FML::Parse ...
|
A
FML::Process::MODULE
uses-a FML::Something
uses-a CPAN module
uses-a ...
If you have prepared FML::Process::MODULE, define relation between the
program name and the module at fml/etc/modules. Also, define available
command line options at fml/etc/command_line_options if needed.
After it is prepared, symlink the loader and the new program name.
For example,
% ls -l /usr/local/libexec/fml
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 command@ -> loader
drwxr-xr-x 2 root wheel 512 Apr 14 18:25 current-20030414/
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 digest@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 distribute@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 error@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fml@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fml.pl@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmladdr@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmlalias@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmlconf@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmldoc@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmlhtmlify@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmlsch@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 fmlserv@ -> loader
-rwxr-xr-x 1 root wheel 6863 Apr 14 18:24 loader*
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 makefml@ -> loader
lrwxr-xr-x 1 root wheel 6 Apr 14 18:25 mead@ -> loader
As a test, you symlink it explicitly. For the canonical programs, fml
installer symlinks them according to fml/etc/install.cf. You need to
define the program as $bin_programs or $exec_programs in install.cf.in
(configure generates install.cf).
Create A Program (CGI)
The main part of CGI program is implemented as an FML::CGI::XXX class.
These modules have the following relation.
FML::Process::Kernel
|
A
FML::Process::CGI::Kernel uses-a CGI
|
A
FML::Process::CGI
|
A
FML::CGI::XXX
How to write CGI programs is same as one of CUI. GUI modules locate
under FML::CGI to clarify the difference between CUI and GUI.
In the case of CGI, prepare the following methods for screen control
in FML::CGI::MODULE.
html_start()
html_end()
and
run_cgi_main()
run_cgi_title()
run_cgi_navigator()
run_cgi_menu()
run_cgi_command_help()
run_cgi_options()
These methods are called from verify_request() and run() in
FML::Process::CGI.
CGI process is driven by FML::Process::CGI.
run() method calls
$curproc->html_start($args);
call a set of run_cgi_xxx() methods
$curproc->html_end($args);
to control screen.
At 2001/11, FML::Process::CGI::Kernel consists of the following methods:
Almost cases,
FML::Process::Kernel method is overloaded by other modules.
So, not called directly.
new()
prepare()
verify_request()
run()
finish()
You do not need edit these files.
FML::CGI:: is called at run() method.