Да, вы можете просто добавить супервизоров в качестве дочерних. Или смешивать и сочетать. Обычно я делаю что-то вроде этого:
(в моем руководителе высшего уровня)
init([]) ->
Args = [],
ModuleArray = [get_info(Module, Args)
|| Module
<- [emx_nodestate, emx_sup_data, emx_sup_util, emx_sup_api,
emx_flow]],
{ok, {{one_for_one, 3, 1}, ModuleArray}}.
get_info(Module, Args) ->
{Module, {Module, start_link, [Args]}, permanent, 10000,
worker, [Module]}.
И тогда что-то вроде emx_sup_data (супервизор поведения) содержит:
init([]) ->
Args = [],
ModuleArray = [get_info(Module, Args)
|| Module <- [job_housekeep]],
{ok, {{one_for_all, 3, 1}, ModuleArray}}.
get_info(Module, Args) ->
{Module, {Module, start_link, [Args]}, permanent, 10000,
worker, [Module]}.
и что-то вроде emx_nodestate (поведение gen_server)
init([]) ->
{ok, #state{status=starting, interested=[]}}.
Работает как сон ...!