Migrating wiki contents from Google Code

Esse commit está contido em:
Google Code Exporter
2016-03-26 22:06:49 -04:00
commit 3b9e8a68d5
5 arquivos alterados com 132 adições e 0 exclusões
+15
Ver Arquivo
@@ -0,0 +1,15 @@
As we all know, WebMind code does not follow all of these rules, but lets try to keep things the best we can. If we all became commited to follow these guidelines, and change the files that are not in them; we certainly could make our mind better. =}
# Files Format #
* Save files with ISO-8859-1 encoding
* All files **must** be named with lower case
* PHP files must have the ".php' extension
* Files containing only PHP code should not end with "?>" (This helps to avoid the _headers already sent_ error)
# Coding information #
* Indentation with **tabs**
* The opening brackets should be in the same line of their statements
* Classes are named using CamelCase: _ClassNameExample_
* Conditions should not have spaces right after/before the parentheses: _if ($var1 == $var2)_
+2
Ver Arquivo
@@ -0,0 +1,2 @@
* CodingStandards _Information about formatting code and editing documents_
* CodeStructure _Information about WebMind's Structure_
+81
Ver Arquivo
@@ -0,0 +1,81 @@
# ![http://webmind.googlecode.com/svn/trunk/restrict/modules/Mimoza/data/config/images/icon.png](http://webmind.googlecode.com/svn/trunk/restrict/modules/Mimoza/data/config/images/icon.png) Mimoza #
_Esta página visa centralizar informações pertinentes ao módulo gerador de aplicativos PHP baseados no Zend Framework para Webmind. Este artigo está **incompleto**._
## Apresentação ##
O módulo Mimoza (Mind Module for Zend Framework Applications) foi criado com o objetivo de produzir aplicativos Zend Framework a partir da inteligência gerada pelo Mind. Porém, com desenvolvimento e análise do problema, foi constatado que havia necessidade de criação de uma biblioteca de classes, para facilitar o desenvolvimento deste. O Mimoza então surge como um _framework_ experimental para criação de novos módulos para o Webmind.
## Estudo de Caso ##
Os módulos do Webmind baseiam-se na inteligência gerada pelo Mind para renderizar aplicativos. Esta inteligência contém todas as informações necessárias para criação de um sistema baseado em banco de dados para gravação, atualização e consulta. Lendo estes dados, um módulo possui capacidade de criação dos arquivos de código fonte.
Porém, até o momento, o módulo é uma classe que armazena todos os comandos necessários, como regras de negócio, processamento bruto e resultados de saída, tornando seu código de difícil manutenção.
## Solução ##
Com a construção de uma ferramenta que facilite a geração de módulos, estes podem ser mais acessíveis para programadores e a contribuição do grupo de desenvolvimento tornar-se-á mais ativa.
Uma estrutura de divisão em camadas, separando a área de programação da renderização dos arquivos poderá ser aplicada, dando suporte para expandir as classes conforme seja a necessidade do programador, fornecendo filtros, construtores e auxiliares no desenvolvimento.
## Framework ##
Conforme dito anteriormente, foi necessária a construção de uma biblioteca para facilitar a criação do módulo. Esta biblioteca é dividida em pacotes, cada um responsável por uma tarefa distinta.
Os pacotes estão dispostos na mesma estrutura de diretórios proveniente do Zend Framework.
### Mimoza\_Loader ###
O pacote de carregamento de classes para o Mimoza possui as mesmas características, porém com menos funcionalidades, que o carregador do Zend Framework. Criado com o padrão Singleton, o método de inclusão pode ser invocado em qualquer parte do código.
Sempre que uma classe necessita ser carregada no código do arquivo atual, recomenda-se a chamada do método de inclusão de classes no topo do arquivo, centralizando as chamadas. Não importa quantas vezes uma classe é invocada através do método, ela somente é carregada uma vez a cada fluxo de processamento do PHP.
```
if (!$this->_enable) {
Mimoza_Loader::loadClass('Mimoza_Loader_Exception');
$message = sprintf('Classe Inexistente: "%s"', 'Mimoza_Builder');
throw new Mimoza_Loader_Exception($message);
}
```
Ele é muito utilizado dentro do Mimoza como carregador de classes de exceção. A classe `Mimoza_Loader` não trabalha com o método mágico autoload para manter a funcionalidade do Webmind.
### Mimoza\_Builder ###
Pacote de construção de arquivos a partir de textos previamente formatados. Uma classe construtora do Mimoza é responsável pela camada controladora de uma arquitetura MVC, que auxilia na separação de processamento de informação, da renderização final de arquivos.
A classe `Mimoza_Builder` é extendida de sua abstração, que possui características genéricas para o desenvolvimento de outras classes que não sejam do pacote Mimoza. A construtora então possui processamento especializado para este módulo, configurando o caminho de pesquisa para os arquivos de formatação padrão e adição de filtros necessários.
Todas estas características são semelhantes a controladoras de ações do Zend Framework, que recebem o processamento para renderização de arquivos de _templates_.
A construção de uma classe `Builder` é relativamente simples. Devemos criar uma nova classe de nome iniciando pelo sufixo `Builder_`, extendida da classe `Mimoza_Builder`, num arquivo sem o sufixo informado no diretório `/builders` do Mimoza. A classe mãe possui um método abstrato `build($element)`, que deve conter todo o processamento para geração do arquivo alvo, obrigatoriamente com retorno do conteúdo do arquivo gerado pelo método `render($script)`, que busca o arquivo, gerando a informação necessária.
Tomamos um exemplo de classe que renderiza uma controladora de ações do Zend Framework:
```
<?php
Mimoza_Loader::loadClass('Mimoza_Builder');
/**
* Classe Construtora
* Controladora de Ações
* @author Wanderson Henrique Camargo Rosa
* @see Webmind/restrict/modules/Mimoza/builder/Controller.php
*/
class Builder_Controller extends Mimoza_Builder
{
/**
* Processamento para Construção
* @param mixed $element Tabela da Inteligência do Webmind
* @return string Conteúdo do Arquivo Renderizado
*/
public function build($element)
{
$this->name = ucfirst($element->name);
return $this->render('controller.phtml');
}
}
```
Logo, podemos construir várias classes para construção de elementos, partindo do parâmetro informado no método, através da herança do `Mimoza_Builder` e sobrescrita do método abstrato `build($element)`. Também é possível a utilização de filtros pós-renderização e métodos auxiliares encapsulados em objetos, explicados a frente.
+25
Ver Arquivo
@@ -0,0 +1,25 @@
What is TheWebMind<br>
The human mind has the ability to have curiosity and creativity. It's able to innovate, create, develop and learn new things. These are features that machines are not (yet) able to simulate perfectly.<br>
We should use this ability to create and innovate, leaving the machines the responsability to deal with everything that can be automatised. We will increase our results if we focus on what we do best as humans.<br>
TheWebMind is a platform which has an engine able to interpret human knowledge. Using this knowledge, theWebMind speeds up tasks such as analysis and development of softwares.<br>
The information is passed onto theWebMind using WML (Web Mind Language). WML is the language developed exclusively for theWebMind, based on concepts of semi-natural languages (very close to natural language).<br>
TheWebMind renders the WML and generates a KB (knowledge base). With this KB, theWebMind can apply normalisation rules to the database, development of patterns, classes, documentation, etc.<br>
The result is a complete structure for a complex and extensible system.<br>
Here are some of the possible outputs:<br>
- Relational Data Base structure<br>
- Object Oriented Structure<br>
- Diagrams and documentation<br>
- HTML forms (views)<br>
<br>
<hr />
<br>
Web Mind Language<br>
The WML (Web Mind Language) is based on NLP (Natural Language Processing) concepts, an area of computer science which studies the integration between machine languages and human (natural) languages.<br>
WML is the first language considered a [[Lignuagem_de_Programação_Discreta|discrete programming language]], and for that reason it is very similar to natural languages (such as Portuguese, English, Spanish, etc) with only a few specific syntax rules.<br>
Visit the section about WML in the "developers" area and learn how to develop a system using this paradigm.<br>
<br>
<hr />
<br>
Goal<br>
As theWebMind can work with everything that can be automatised, your time and skills can be better applied to develop different things that would not be done by a machine. Using theWebMind, you will develop much more and much faster, writing considerably less than usual, worrying less about patterns and rules and counting on a set of diagrams and documentation that will show you all the details of HOW and based on WHAT theWebMind got to such results, the structure it has prepared for your system, still generating indented as well as commented codes.<br>
Remember that theWebMind bases its instructions and deductions on the analyst/developer's knowledge therefore its results are directly related to their knowledge.
+9
Ver Arquivo
@@ -0,0 +1,9 @@
# Introduction #
A pattern to develop ans specify data in a language very comparable to the natural language.
Developed by Felipe Nascimento, is still in a constant evolution.
# Details #
With this language the analyst and developer can specify caracteristics about the system's inteligence and the knowledge base to "teach" the machine how the system is supposed to be.
The patterns for the semi-natural language are found in thewebmind.blogspot.com