Sisorc
Sisorc
Tutorial de Criação de Novos Módulos
Tutorial de Criação de Novos Módulos
Banco de Dados
Banco de Dados
Para criar um novo módulo é aconselhável que todas as
Para criar um novo módulo é aconselhável que todas as
tabelas destinadas a este módulo esteja dentro de um
tabelas destinadas a este módulo esteja dentro de um
novo schema.
novo schema.
Atualmente existem os seguintes schemas:
Atualmente existem os seguintes schemas:
Fin : Módulo FinanceiroFin : Módulo Financeiro
Lab: Módulo de LaboratóriosLab: Módulo de Laboratórios
Ods: Módulo de Ordem de ServiçoOds: Módulo de Ordem de Serviço
Prj: Módulo de ProjetosPrj: Módulo de Projetos
Sys: Módulo do SistemaSys: Módulo do Sistema
Usr: Módulo de UsuáriosUsr: Módulo de Usuários
Exemplo: Almoxarifado
Exemplo: Almoxarifado
Nomenclatura do banco de dados:Nomenclatura do banco de dados:
Idt: identificadorIdt: identificador
Nme: nomeNme: nome
Txt: textoTxt: texto
Cod: código(normalmente FK)Cod: código(normalmente FK)
Tbl: TabelaTbl: Tabela Vlr: valorVlr: valor Sts: StatusSts: Status
Dta: DataDta: Data
Exemplos:Exemplos:
nme_usuario = Nome do usuárionme_usuario = Nome do usuário
cod_amostra = Código da cod_amostra = Código da Amostra
Padrão de Projeto MVC
Padrão de Projeto MVC
O Sisorc foi implementando utilizando o padrão de projeto O Sisorc foi implementando utilizando o padrão de projeto
MVC, porém ele não está orientado a objetos, na verdade MVC, porém ele não está orientado a objetos, na verdade existem algumas classes, mas para otimizar o desempenho e existem algumas classes, mas para otimizar o desempenho e diminuir o tempo de desenvolvimento ele não está totalmente diminuir o tempo de desenvolvimento ele não está totalmente orientado a objetos.
orientado a objetos.
As principais classes são:As principais classes são:
TTpl : Renderização de TemplatesTTpl : Renderização de Templates
Table: Tabela(HTML)Table: Tabela(HTML)
Tau: conversão e operações usuaisTau: conversão e operações usuais
TDbw: Wrapper do banco de dadosTDbw: Wrapper do banco de dados
Modelos e Regras de Negócio ficam na pasta: MDLModelos e Regras de Negócio ficam na pasta: MDL
Views e Templates ficam na pasta: TPLViews e Templates ficam na pasta: TPL
Permissões
Permissões
Ao criar um novo módulo é necessário criar as
Ao criar um novo módulo é necessário criar as
permissões de acesso a neste módulo.
permissões de acesso a neste módulo.
As permissões ficam armazenadas na tabela
As permissões ficam armazenadas na tabela
usr.tbl_permissoes.
usr.tbl_permissoes.
Exemplo: Criação de Permissão
Exemplo: Criação de Permissão
Para criar uma permissão Para criar uma permissão
basta criar um Sigla(PK) e basta criar um Sigla(PK) e preencher a descrição.
preencher a descrição.
Vale lembrar que as Vale lembrar que as
permissões são empilhadas, permissões são empilhadas, então um usuário pode ter então um usuário pode ter várias permissões.
várias permissões.
Importante: Todos os Importante: Todos os
usuários devem ter ao menos usuários devem ter ao menos a permissão de “USR
a permissão de “USR -
-Usuário do Sistema”, caso Usuário do Sistema”, caso contrário eles não conseguem contrário eles não conseguem nem entrar no sistema.
Criação de Menus
Criação de Menus
A criação de menus é feita dentro do arquivo: A criação de menus é feita dentro do arquivo:
mdl/lgn/fra_menu.php mdl/lgn/fra_menu.php
Dentro deste arquivo existe um array com o seguinte formato:Dentro deste arquivo existe um array com o seguinte formato:
array(array(
'fin',
'fin', // Grupo do menu// Grupo do menu 'LUS‘,
'LUS‘, // Permissão do usuário// Permissão do usuário 'Análises',
'Análises', // Rótulo do menu // Rótulo do menu 'ctl.php?act=lab.fan_lst‘ // Ação 'ctl.php?act=lab.fan_lst‘ // Ação );
);
O menu será construído dinamicamente, neste caso, irá aparecer O menu será construído dinamicamente, neste caso, irá aparecer
a opção ‘Análises’ para os usuários que tiverem a permissão LUS a opção ‘Análises’ para os usuários que tiverem a permissão LUS
Exemplo: Menu Produtos
Exemplo: Menu Produtos
Para criar este menu
Para criar este menu
basta adicionar a seguinte
basta adicionar a seguinte
linha no arquivo:
linha no arquivo:
mdl/lgn/fra_menu.php
mdl/lgn/fra_menu.php
array('fin', 'ALM',
array('fin', 'ALM',
'Produtos','ctl.php?act=al
'Produtos','ctl.php?act=al
m.pdt_crud')
Arquivo de Mapeamento de Controle
Arquivo de Mapeamento de Controle
de Acesso
de Acesso
Todos os módulos devem ter um ou mais arquivos de mapeamento, esse arquivo de mapeamento Todos os módulos devem ter um ou mais arquivos de mapeamento, esse arquivo de mapeamento
é responsável por indicar ao controlador a view, o modelo e a pe
é responsável por indicar ao controlador a view, o modelo e a permissão daquela ação.rmissão daquela ação.
Por motivos de desempenho não foi escolhido o formato XML, este arquivo possui o seguinte Por motivos de desempenho não foi escolhido o formato XML, este arquivo possui o seguinte
formato: formato:
<?php<?php
$map = array($map = array(
'atv_lst' => array('src' => 'atv/atv_lst.php','tpl' => 'skn/pgn_lst.htm','skn' => 'lim', 'per' => 'atv_lst' => array('src' => 'atv/atv_lst.php','tpl' => 'skn/pgn_lst.htm','skn' => 'lim', 'per' =>
'PRJ') 'PRJ')
?>?>
Onde: atv_lst = é o nome da açãoOnde: atv_lst = é o nome da ação
Src: é o nome do arquivo que possui o código fonte para tratamento da ação.Src: é o nome do arquivo que possui o código fonte para tratamento da ação.
Tpl: é o nome do arquivo de template que será renderizado.Tpl: é o nome do arquivo de template que será renderizado.
Skn: é o nome da skin.Skn: é o nome da skin.
Atualmente as skins são:Atualmente as skins são:
lim = renderiza diretamente o arquivo indicado.lim = renderiza diretamente o arquivo indicado.
prn = renderiza o arquivo utilizando o arquivo: “skn/pgn_prn.htprn = renderiza o arquivo utilizando o arquivo: “skn/pgn_prn.htm”.m”.
non = Não renderiza nenhum arquivo, utilizado para javascript dinon = Não renderiza nenhum arquivo, utilizado para javascript dinâmicos e geração de PDF e XLS.nâmicos e geração de PDF e XLS.
Exemplo: CRUD de Produtos
Exemplo: CRUD de Produtos
Criando o arquivo de mapeamento(ctl/map_Criando o arquivo de mapeamento(ctl/map_almalm.php):.php):
<?php<?php $map = array( $map = array( 'pdt_crud' => array( 'pdt_crud' => array( 'src' =>'alm/pdt_crud.php', 'src' =>'alm/pdt_crud.php', 'tpl' =>'skn/crud_prn.htm', 'tpl' =>'skn/crud_prn.htm', 'skn' => 'prn', 'skn' => 'prn', 'per' => 'ALM‘ 'per' => 'ALM‘ ) ) ); ); ?> ?>
Este mapeamento significa que a ação: almEste mapeamento significa que a ação: alm.pdt_crud tem como .pdt_crud tem como
modelo o arquivo alm/pdt_crud.php, a view skn/crud_prn.htm, modelo o arquivo alm/pdt_crud.php, a view skn/crud_prn.htm, a skin prn e a permissão ‘ALM’ como parametros.
Modelo
Modelo
O controlador ao identificar no mapeamento qual é o arquivo de O controlador ao identificar no mapeamento qual é o arquivo de
modelo irá fazer o include do arquivo e executar a função main modelo irá fazer o include do arquivo e executar a função main deste arquivo.
deste arquivo.
Um arquivo de modelo tem sempre o seguinte formato:Um arquivo de modelo tem sempre o seguinte formato:
<?php<?php // includes // includes // Functions // Functions function main($tau){ function main($tau){ // Código fonte // Código fonte
return $lbl; // $lbl é um array to tipo key => value utiliza
return $lbl; // $lbl é um array to tipo key => value utilizando ndo na renderização. na renderização. } } ?> ?>
Exemplo: Criação do modelo
Exemplo: Criação do modelo
<?php<?php
requirerequire('./('./src/crud.phpsrc/crud.php');');
functionfunctionmainmain($($tautau){){
$$opcopc= $= $tautau-->>getget('('opc');opc');
if ($if ($opc==''){ $oopc==''){ $opc= 'pc= 'rea'; }rea'; }
$$cfgcfg= = arrayarray((
''titletitle' => 'Produtos',' => 'Produtos',
''pkpk' => '' => 'idt_produto',idt_produto',
''tabletable' => '' => 'alm.tbl_produtos',alm.tbl_produtos',
''fieldsfields' => ' => arrayarray( (
''nme_produtonme_produto' => ' => arrayarray((
''typetype' => 'string',' => 'string',
''namename' => 'Nome',' => 'Nome',
''notnullnotnull' => ' => truetrue
),),
''txt_descricaotxt_descricao' => ' => arrayarray((
''typetype' => '' => 'text',text',
''namename' => 'Descrição',' => 'Descrição',
''notnullnotnull' => ' => truetrue
) )
),),
''createcreate' => ' => arrayarray((
''fieldsfields' => '' => 'nme_produtonme_produto,,txt_descricaotxt_descricao''
),),
''readread' => ' => arrayarray((
''filtersfilters' => '' => 'nme_produto',nme_produto',
''fieldsfields' => '' => 'nme_produtonme_produto,,txt_descricaotxt_descricao',',
''sqlsql' => '' => 'selectselect##fieldsfields# # fromfromalm.tbl_produtosalm.tbl_produtoswherewhere##wherewhere#'#'
),),
''updateupdate' => ' => arrayarray((
''fieldsfields' => '' => 'nme_produtonme_produto,,txt_descricaotxt_descricao''
),),
''deletedelete' => ' => arrayarray()()
););
$$lbllbl= = crudcrud($($opcopc, $, $cfgcfg););
returnreturn$$lbllbl;; }} ?>?>
Neste caso estamos utilizando o
Neste caso estamos utilizando o
arquivo “
arquivo “src/crud.phpsrc/crud.php” este ” este arquivo gera páginas CRUD
arquivo gera páginas CRUD
tradicionais, inclusive com FK.
Telas:
Telas:
Dicionário
Dicionário
Nos modelos foram utilizado as seguintes siglas:Nos modelos foram utilizado as seguintes siglas:
atvatv=> Atividades=> Atividades
autaut=> Automóveis=> Automóveis
cbbcbb=> => ComboboxCombobox
com => Combustívelcom => Combustível
doc => Tipo de Documentodoc => Tipo de Documento
empemp=> Empresas=> Empresas
finfin=> Financeiro=> Financeiro
fonfon=> Fonte=> Fonte
gesges=> Gestão=> Gestão
lablab=> Laboratórios=> Laboratórios
lgnlgn=> => LoginLogin
loglog=> => LogsLogs
motmot=> Motoristas=> Motoristas
odsods=> Ordem de Serviço=> Ordem de Serviço
pacpac=> Plano de ação=> Plano de ação
pespes=> Pesquisador=> Pesquisador
prjprj=> Projetos=> Projetos
tdstds=> Tipo de despesa=> Tipo de despesa
uni => Unidadesuni => Unidades
usrusr=> Usuários=> Usuários
Dicionário
Dicionário
–
–
Cont.
Cont.
insins=> Inserir=> Inserir
altalt=> Alterar=> Alterar
deldel=> apagar=> apagar
prnprn=> Ação principal=> Ação principal
pstpst=> Post=> Post
frmfrm=> Formulário=> Formulário
sol => Solicitaçãosol => Solicitação
vis => Visualizarvis => Visualizar
detdet=> Detalhes=> Detalhes
lstlst=> Lista=> Lista
gragra=> Gráfico=> Gráfico
Exemplo arquivo: mdl/usr/alt_frm.phpExemplo arquivo: mdl/usr/alt_frm.php
mdlmdl=> Modelo=> Modelo
usrusr=> Usuários=> Usuários