Tutorial 7: Basic Customization
Pode-se apresentar a situação onde os métodos padrões implementados no Framework do Clarion não sejam os requeridos pela aplicação desenvolvida, para lograr definir e utilizar procedimentos próprios Clarion faz uso dos delegados de C# (delegates). É possível utilizar delegados como parâmetros de funções durante a inicialização delas.
Por exemplo, se se quer especificar um método para calcular a possibilidade de escolha de um parâmetro, durante a inicialização de uma rede BP, por exemplo, é só passar para a função o delegado associado.
O seguinte código apresenta a forma de inicializar a BPNetwork com um critério de escolha definido pelo usuário usando uma função que tem a mesma assinatura do que o delegado EligibilityChecker.
O código anterior apresenta uma forma curta de especificar a função. Outra forma é declarando o delegado que utiliza função especificada. Assim por exemplo, se define una função chamada Custom_EligibilityCheck, a qual é associada a um delegado chamado CustomEligibilityCheckerDelegate, mesmo que é utilizado na inicialização da rede
Embora a inicialização de objetos internos utilizando delegados seja opcional, tem elementos que de fato requer a utilização deles para poder ser declarados, esse é o caso das regras IRL e as regras fixas.
Creating Custom Rules
Na arquitetura Clarion são utilizadas duas classes para implementar os dois tipos de regra: a classe IRLRule e a classe FixedRule. Para poder inicializar qualquer das duas classes é requerido um delegado, de fato é necessário inicializar a classe com o delegado que vai calcular o valor da regra. A assinatura do delegado SupportCalculator é
Using the SupportCalculator Delegate to Set Up an IRL Rule
Aqui se apresentará um exemplo de uso do SupportCalculator para inicializar uma regra do tipo IRLRule. Suponha que se tem o seguinte conjunto de pares dimensão-valor {dim1,a}, {dim1, b}, {dim2, c}, e {dim2, d} e a ação: {do_something}. Então suponha-se que quer se criar a seguinte regra:
Para utilizar a condição da regra é necessário criar um método que pode ser inicializado usando a assinatura do delegado SupportCalculator. Em pseudo-código ele seria:
Initializing the IRL Rule
Para configurar a IRLRule são necessárias três coisas. Primeiro é necessário inicializa-la
Segundo é necessário configurar a condição inicial da regra
Finalmente é necessário "commit" ela:
Isto é todo o necessário que se precisa para configurar uma IRLRule.
Using the SupportCalculator Delegate to Set Up a Fixed Rule
O processo para configurar uma regra fixa é muito similar ao de a IRLRule. Como exemplo vai-se utilizar a seguinte regra
Para programa a regra é usada uma função com a assinatura do delegado SupportCalculator. Em pseudo-código isso é:
O código do pseudo-código em C# fica:
Initializing the Fixed Rule
Para iniciar uma regra fixa é fazer o mesmo que para a IRLRule:
Generic Equations
As veces numa tarefa é possivel obter um resultado apartir da saida de uma equação conhecida. Quando acontecem estes cenarios Clarion tem a classe GenericEquation. Este componente utiliza o delegado Equation. A assinatura do delegado é
Como já foi dito, para implementar uma custom equation, todo o que é necessario é definir um método com a mesma assinatura do que o delegado.
Por exemplo suponhamos que quer-se criar uma GenericEquation que possa ser usada para resolver uma equação linear simples, isto é possível usando:
Após ter criado o método do delegado, para poder usa-lo é necessário passar ele como parâmetro durante a inicialização da GenericEquation.
Só para lembrar, para completar a inicialização da GenericEquation, é necessário definir as entradas e as saídas, assim como adiciona-lo ao agente. A seguinte imagem apresenta o exemplo de como configurar a GenericEquation: