Arquivar maio 2017

Django Workflow

Você, desenvolvedor, já se deparou com cenários específicos em que você precisa controlar um fluxo de informações, mas, suportando diversos status, com diversos efeitos colaterais diferentes, entre cada mudança desses status?

Criar e manter este tipo de estrutura, manualmente, é bem complicado. Formalmente, este tipo de estrutura é chamada de máquina de estado finita ou finite state machines e para os íntimos, FSM.

Inspirados em outros pacotes disponíveis para o Django, construímos nosso próprio gerenciador de máquinas de estados. Este é mais um pacote open-source que disponibilizamos para a comunidade.

Aplicações das FSM

As aplicações das FSMs são diversas. Elas podem controlar como compoenentes internos de uma aplicação reagem a estímulos externos (usuário informa determinada informação) ou mesmo serem editadas pelo próprio usuário. Um exemplo disso são os famigerados BPM (Bussiness Process Management**) onde os próprios usuários definem até certo ponto, o fluxo da informação e por quais verificações esta deve passar antes de permitir a troca de um estado para outro.

Outro exemplo interessante é que algumas AIs são escritas usando os conceitos de FSM para determinar comportamentos de seus agentes, portanto, te garanto, FSMs são bastante flexíveis.

Na realidade, a ideia desta aplicação Django surgiu para atender uma demanda, onde os usuários mais graduados, deveriam poder escolher como a informação fluiria numa aplicação geográfica.

Instalação

Para instalar este pacote é bem simples e você pode usar o pip:

pip install django-workflow-fsm

Agora adicione este pacote ao seu INSTALLED_APPS:

INSTALLED_APPS = (
    # outras apps,
    'workflow',
    # outras apps,
)

Execute suas migrações com ./manage.py migrate

Getting Started

Terminado isto, você precisa definir qual é o modelo que você deseja controlar o status. Basta você herdar de um MixIn para obter a funcionalidade de máquina de status:

# models.py
class Projeto(StateControllerMixIn):
    nome = models.CharField(max_length=128)

Pronto. A configuração básica está pronta!

Depois disso, com toda a certeza, você deve querer editar quais status e como a informação flui entre estes status. Isto é bem fácil.

Nós controlamos o fluxo de informações utilizando três modelos:

  • StateMachine;
  • State
  • Transition;

Vamos construir isso em um passo a passo rápido:

# shell ou fixture ou migração de dados
status_aberto = State.objects.create(code='aberto')
status_em_andamento = State.objects.create(code='em-andamento')
status_fechado = State.objects.create(code='fechado')

# nossos status estão criados. Vamos criar nossa máquina de estado

fsm = StateMachine.objects.create(name='projetos-simples', initial_state=status_aberto)
# na linha acima definimos nossa máquina e o status inicial dela, aberto.

# agora vamos definir as transicoes
aberto_andamento = Transition.objects.create(name='iniciando-projeto',
    machine=fsm,
    from_state=status_aberto,
    to_state=status_em_andamento)

andamento_fechado = Transition.objects.create(name='finalizando-projeto',
    machine=fsm,
    from_state=status_em_andamento,
    to_state=status_fechado)

Agora que nossas transições estão prontas, você pode definir qualquer projeto, com diferentes tipos de máquinas de estado, basta escolher a máquina de estado apropriada, veja só:

projeto = Projeto()
projeto.nome = 'projeto legal'
projeto.save(state_machine=fsm)

Neste momento, todas as ações da máquina de estado estão disponíveis através do mixin que você herdou na construção do modelo Projeto.

Exemplo:

projeto.current_state
# imprime "aberto"
projeto.next
# imprime "em andamento"
projeto.change_to(state_em_andamento)
# projeto será enviado para o estado "em andamento"
projeto.next
# imprime 'fechado'

Não é só isso, existem diversos ganchos que você pode usar, como tarefas específicas a serem disparadas e ações, nas quais você pode associar a um estado, para indicar que esta ação está disponível. Exemplo: no status em andamento do projeto, vocẽ pode criar comentários e apenas neste estado. Portanto, você pode criar uma Action e associá-la ao estado em-andamento.

No seu código, vocẽ pode checar qual action está disponível e renderizar o template como você achar melhor.

Outras coisas legais:

  • Você pode associar permissões a cada estado, ou seja, apenas usuários com determinadas permissões podem trocar o estado da máquina;
  • Você pode associar tasks (ou tarefas) que serão executadas quando um estado da máquina é alterado. Por exemplo, quando a máquina de estado mudar de estado, quero disparar um email para um usuário, informando do ocorrido. Você pode criar isso como uma Task e associar esta task a transição específica.
  • Suporte para tarefas assíncronas. Por padrão, as tarefas são executadas usando o Celery, que é uma dependência do projeto. Caso você não queira executar estas tarefas de forma assícrona, basta desabilitar o Celery.
  • Suporte completo para API REST, usando django-rest-framework

Repositório

Disponível no Github: https://github.com/sigma-geosistemas/django-workflow

Roadmap

  • Suporte completo para tarefas assíncronas e síncronas (hoje só suportamos um modo, queriamos suportar os dois);
  • Melhorar a infraestrutura de testes;
  • Melhor/criar um help/ajuda/getting started;
  • Outras coisitas;

Este é um pacote bem completo para gestão de máquinas de estado. Caso você tenha interesse, dê uma conferida. Estamos a disposição!

Organizando a Gestão Fundiária com o Geoadmin

Este é a primeira postagem de uma série de guias sobre como utilizar o Geoadmin de forma efetiva para gestão de seus empreendimentos.

Neste guia, iremos discutir como utilizar de forma efetiva o módulo de gestão fundiária do sistema.

Com o Geoadmin, é possível organizar todas as questões envolvidas na gestão fundiária.

Elementos da Gestão Fundiária

Dentro do sistema, existem alguns elementos que são possíveis de serem administrados no processo de gestão fundiária.

São eles:

  • Proprietário;
  • Propriedade;
  • Status Fundiário;
  • Matrícula;
  • Processo Fundiário;
  • Anexos;

O fluxo de cadastro está representado na figura abaixo:

processo

Ao cadastrar uma propriedade, podemos escolher um status fundiário inicial para a mesma, bem como matrículas envolvidas.

Veja na figura abaixo:

criar-propriedade

Quando você terminar de cadastrar uma propriedade, ela terá, portanto, um status fundiário inicial e uma ou mais matrículas.

Neste ponto, não é possível alterar diretamente o proprietário ou as matrículas daquela propriedade.

Você precisa construir um processo fundiário para registrar suas alterações, com todas as etapas pelas quais aquela propriedade passou para atingir o status em que consideramos a mesma como
regular.

Edição de Status Fundiário #1

Durante a edição de processo fundiário, você pode indicar qual é a próxima etapa do processo, por exemplo:

  • Durante o cadastro da propriedade, você seleciona como status fundiário o valor Escritura Não Registrada;
  • Esta propriedade em questão, entra em negociação com o presente proprietário;
  • O Contrato de Compra e Venda é firmado. Você ou outro usuário do Geoadmin, faz a alteração correspondente no processo fundiário;

Edição de Processo Fundiário #2

  • A venda foi realizada e a escritura registrada com o nome do novo proprietário. Ao selecionar o status Escritura Registrada o sistema permitirá que você escolha novos proprietários e novas matrículas para esta propriedade.

Ambos campos são opcionais.

Caso você selecione novos proprietários, estes serão assinalados como donos desta propriedade. O mesmo fluxo se aplica a novas
matrículas.

Edição de Processo Fundiário #3

Ao final destas edições, você pode notar na figura abaixo, que o proprietário foi trocado corretamente, bem como a matrícula do imóvel.

Fim Edição Processo Fundiário

Quais status existem?

Para você decolar rapidamente com a gestão fundiária, já deixamos alguns status fundiários
disponíveis quando você assina o sistema. Eles são:

  • Escritura Registrada;
  • Escritura Não Registrada;
  • Contrato de Compra e Venda;
  • Outros;

A lista de status disponíveis no Geoadmin está disponível seguindo o menu esquerdo em,
Propriedades > Status Fundiário.

Posso criar meu próprio status?

Isto é perfeitamente possível. Você pode cadastrar novos status fundiários utilizando
o menu esquerdo, clicando em: Propriedades > Status Fundiário > Cadastrar Novo Status Fundiário.

Veja o vídeo abaixo:

Conclusão

Ao utilizar o Geoadmin, você pode construir seus próprios fluxos de gestão fundiária, já que o sistema permite que você customize e anexe arquivos a cada Etapa Fundiária.

Atualmente, existem clientes utilizando o Geoadmin para gestão fundiária em empreendimentos para geração de energia elétrica, grandes produtores rurais e agroindústrias, com arrendamentos
e diversas propriedades.

O Geoadmin te ajuda a regularizar a papelada, de forma que você possa se concentrar no que sabe melhor, produzir.

Faça um registro de avaliação!

Desafios e Soluções na Gestão de Empreendimentos (parte 2)

O retorno do investimento em tecnologia: a primeira coisa que devemos assumir é que a tecnologia é uma amiga do gestor.

Uma grande amiga.

Essa afirmação parece óbvia mas sua prática ainda não é.

De fato, todos os sistemas de gestão analógicos ou digitais apresentam prós e contras.

O que observamos neste artigo é que sistemas de gerenciamento fundiário e ambiental digitais demonstram muito mais benefícios do que ressalvas em comparação a outras modalidades.

Eficiência para o gerenciamento de equipes multidisciplinares

Um sistema de gestão fundiária online garante aos administradores ferramentas para organizar o trabalho de equipes em campo e fora dele em tempo real.

As tarefas não ficam estacionadas em função de telefonemas ou registros.

Prevenção contra processos, impedimentos e paralisações

Quanto mais áreas a serem administradas maiores as chances de complicações burocráticas que podem levar a processos onerosos.

Ao tratar de grandes projetos os riscos e consequências são proporcionais.

Uma falha na obtenção de licenças, certificados pode gerar multas e processos muito caros.

O valor para custear UMA multa, paralisação de projeto ou processo jurídico poderia pagar a implantação de um Sistema de Gestão que minimiza significativamente os riscos contra esse tipo de prejuízo.

Redução de custos operacionais

Sistemas de gestão digitais online expressam um custo baixo de aplicação e manutenção anual.

Podem ser acessados a partir de qualquer área com acesso à internet sem a necessidade de instalação no dispositivo.

O suporte ao usuário e treinamento de equipes podem ser realizado por conferência ou telefone junto aos desenvolvedores e especialistas em gestão.

Imagem pública sustentável

Empresas que utilizam Sistemas de Gestão Fundiária digitais estão alinhadas com práticas sustentáveis urbanas e rurais.

Trata-se de uma tecnologia positiva ao meio ambiente que se materializa em pequenos detalhes (reduzindo o consumo de papel, por exemplo) e que também influencia diretamente sobre grandes impactos, pois cumpre papel significativo na gestão sustentável de empreendimentos.

Nesse sentido, até a competitividade da empresa é promovida se bem explorada por ações de marketing

Eficiência que gera liquidez

Ao implantar o sistema a empresa promove a eficiência administrativa.

Um sistema de gestão fundiária e ambiental orgânico e funcional reduz riscos promovendo a velocidade e assertividade de ações nos processos do dia a dia.

Um colaborador que gastaria uma hora para monitorar as licenças exigidas para um empreendimento passaria a gastar 10 minutos.

Uma equipe que em campo quando recebe dados e orientações em tempo real executa suas tarefas com mais precisão e resultado.

Os desafios de grandes empreendimentos fundiários exigem soluções do mesmo porte.

A aplicação de Sistemas de gestão fundiária digitais prova a cada dia que é possível lidar com cenários de gestão complexos com segurança e eficiência.

Neste ensaio tentamos apresentar alguns dos benefícios que já fazem parte da realidade de grandes empresas que lidam com a administração complexa de terras.

Por enquanto a tecnologia para atender esse segmento é uma opção, mas logo se tornará regra (institucionalizada ou não).

As empresas mais experientes no uso dessas ferramentas estão sendo formatadas agora e, provavelmente, elas estarão liderando seus mercados em um futuro bem próximo.

Desafios e Soluções na Gestão de Empreendimentos (parte 1)

“Com grandes empreendimentos, vêm grandes responsabilidades“. A máxima inspirada
em Augusto Comte (e, posteriormente, no Tio Ben), cabe como uma luva em referência às atividades de grandes empreendimentos relacionados à gestão de terras e propriedades.

Essencialmente, a administração de pequenos empreendimentos enfrenta as mesmas dificuldades em comparação aos grandes.

Todos precisam lidar com cargas tributárias, acesso à crédito, gestão de pessoas e burocracia.

A diferença entre pequenos e grandes se expressa na dimensão desses desafios.

No segmento fundiário, empresas que administram pequenas propriedades precisam gastar boa parte do tempo útil em funções legislativas.

Entre licenças, alvarás, certificados e outras documentações, a burocracia consome horas de atividade produtiva.

O cenário que é complicado para pequenos revela um desafio complexo para os maiores.

Naturalmente, um empreendimento fundiário de grande porte precisa organizar o espaço e a produção de milhares (às vezes milhões) de metros quadrados.

Seguir o compliance torna-se uma função complexa e, ao mesmo tempo, fundamental para as operações produtivas.

Lidando com essas proporções, a operação e o sucesso do empreendimentos mantém estreita relação com a administração de licenças, por exemplo.

Complicadores para obtenção de licenças

A obtenção de licenças junto aos órgãos reguladores depende do cumprimento de condicionantes ambientais e sociais que variam conforme o porte e tipo do empreendimento.

Entre as obrigações administrativas, cumprir prazo para entrega de relatórios e documentos nos órgãos ambientais é parte do trabalho.

E como os gestores conseguem essas licenças dentro dos prazos?

A resposta envolve muita gente. As condicionantes/serviços sempre estão relacionadas à vários prestadores de serviço que compõe um grupo de competência multi-disciplinar contando com arquéologos, biólogos, geógrafos, assistente sociais, engenheiros, entre outros.

Para organizar todas essas variáveis e fazer com que elas funcionem organicamente é preciso, ou melhor, é necessário, acessar soluções eficientes de controle e gestão das macro e micro tarefas.

As opções estão disponíveis no mercado e fazem parte do cotidiano dos maiores empreendimentos que administram terras e propriedades do país.

Quais os benefícios que elas acessam usando sistemas de gestão fundiário discutiremos em um segundo momento.

O Geoadmin me ajuda a gerir empreendimentos, grandes e pequenos?

A resposta, caro leitor, é sim. Vá ao nosso registro e realize seu cadastro. Organize a gestão fundiária e ambiental em menos de um minuto.

Screencasts SIGMA

Olá pessoal, boa tarde!

De forma a nivelar o conhecimento da equipe, estamos com uma prática que tem dado certo. A cada semana, um dos desenvolvedores, discorre sobre algum assunto relacionado ao trabalho, no formato de um screencast.

Nós já realizamos três screencasts na empresa, cada semana sobre um tópico. E estamos gravando este material no Youtube e deixando disponível para todos.

Também usamos nossos repositórios no Gitlab para manter tudo registrado.

Saca só o que já rolou:

E estamos com grandes planos agendados!

Nas próximas semanas:

  • Django Rest Framework (Alexandre Cunha);
  • BDD;
  • Webpack;
  • Marionette;

Também deixamos em aberto a participação da comunidade. Caso tenham interesse, os SCs estão sendo veiculados ao-vivo, pelo Youtube, todos as segundas-feiras (quando possível) ou na terça-feira, as 9:30 da manhã – para dar aquela inspiração e começar bem a semana.

Se inscreva no nosso canal do Youtube e veja as novidades!

Na próxima semana, nosso desenvolvedor Alexandre Cunha vai fazer um Screencast de Django Rest Framework e mostrar alguns cantos mais desconhecidos deste excelente framework. Cola aí com a gente e aprenda mais!

Abraços