Desenvolvimento de algumas rotinas de uma empresa especializada em eventos esportivos. Foram consumidas 2 APIs, aberta 1 API para outros sistemas, criadas tabelas, páginas, com validação de campos e interação com o usuário. A aplicação foi escrita em inglês e possui tradução para o portiguês do Brasil.
- Demo
- Iniciar Projeto
- Retorno das APIs
- Documentação (descritivo) do projeto
- Utilidades e Referências
- Cont(r)ate-me
- Agradecimentos
Slides utilizados para a apresentação do TCC
- Abra a paleta de comandos (
ctrl + shift + p
) - Digite
AL:Go!
- Insira o caminho do diretório (e crie um diretório vazio para o projeto)
- Escolha a opção do servidor. No meu caso escolhi
Your own server
- Na opção de login, ignore esta etapa, apertando
esc
- Abra o arquivo
.vscode > launch.json
e edite os parâmetros:-
server
alterar parahttp://NOME_OU_IP_SEU_SERVIDOR
-
serverInstance
insira o nome da sua máquina virtual no lugar do padãoBC130
-
name
o nome do seu servidor. Pode ser qualquer coisa -
"startupObjectId"
insira o objeto que iniciará por padrão após a compilação.
-
- Após publicar o projeto pela primeira vez, insira o parâmetro
"schemaUpdateMode": "Recreate",
- Apague o arquivo
HelloWord.al
e inicie o desenvolvimento - Abra a paleta de comandos (
ctrl + shift + p
) - Digite
AL: Download Symbols
- Aparecerão os módulos baixados do diretório
.alpackages
na seção explorer do projeto - Compile o projeto,
F5
para depuração ouctrl + F5
para publicação direta
Sport Influencers (exemplo de retorno da requisição)
[
{
"id": 1,
"name": "Cristiano Ronaldo",
"username": "CR7",
"email": "cristiano@ronaldo.com",
"address": {
"street": "Avenida dos Campeões",
"suite": "Apt. 7",
"city": "Madri",
"zipcode": "28001",
"geo": {
"lat": "40.4167",
"lng": "-3.7033"
}
},
"phone": "+34 123456789",
"website": "cristianoronaldo.com",
"company": {
"name": "CR7 Empreendimentos Esportivos",
"catchPhrase": "Transformando sonhos em realidade",
"bs": "Gerenciamento de carreiras esportivas"
}
},
{
"id": 2,
"name": "Neymar Jr.",
"username": "Neymar",
"email": "neymar@jr.com",
"address": {
"street": "Rua dos Craques",
"suite": "Apt. 10",
"city": "São Paulo",
"zipcode": "04578-910",
"geo": {
"lat": "-23.5644",
"lng": "-46.6517"
}
},
"phone": "+55 11 987654321",
"website": "neymarjr.com",
"company": {
"name": "NJ Sports",
"catchPhrase": "Paixão e dedicação pelo futebol",
"bs": "Marketing esportivo"
}
},
Go Weather (exemplo de retorno da requisição)
{
"temperature": "16 °C",
"wind": "28 km/h",
"description": "Rain, mist",
"forecast": [
{
"day": "1",
"temperature": "20 °C",
"wind": "13 km/h"
},
{
"day": "2",
"temperature": "+14 °C",
"wind": "12 km/h"
},
{
"day": "3",
"temperature": "18 °C",
"wind": "9 km/h"
}
]
}
Aqui vou descrever a finalidade de adicionar cada componente, bem como o papel de cada um dentro do projeto.
👓 1 - Tabelas e Páginas
Ao criar uma tabela, definimos quais dados desejamos capturar na aplicação. As propriedades de cada campo são definidos na tabela.
Para que sejam exibido os dados, precisamos de criar páginas. Estas permitem que o usuário interaja com nosso aplicativo. Uma página de lista é a primeira página que o usuário acessará. A partir desta lista, é possível inserir, alterar e excluir dados. Quando informações mais detalhadas são necessárias, o usuário pode acessar a página de cartão.
⛔ 2 - Validação de campos e tratamento de erros
Gatilhos (triggers) são funções que acontessem como resultado de uma ação. Estes podem ser ignorados a depender da regra de negócios. No nosso caso, o gatilho sempre será disparado para validar o campo data da última exibição.
Cada objeto AL possui um conjunto de gatilhos própiros.
Foi adicionado um tratamento de erro para que exiba uma mensagem para o usuário, utilizando rótulos (Label Data).
👮🏾♀️ 3 - Classificação dos dados
Com a constante coleta e manipulação de dados em massa, é preciso se atentar para as legislações de proteção à dados pessoais. No Business Central, os dados podem ser classificados de maneira simples, adicionando o parâmetro DataClassification
com o seu devido valor.
Para ver a documentação com os valores possível, acesse DataClassification Property.
📋 4 - Permissões de acesso
Nada é pior do que testar, validar e entregar o aplicativo que o cliente não consegue acessar.
Para gerar automaticamente o arquivo de permissões, abra a paleta de comandos (ctrl + shift + p
) e digite AL: Generate permission set containing current extension objects
. Será criado um arquivo de permissões. Após publicar o projeto, o administrador pode acessar a política abra a página de política de permissões (Tell me > permissions sets
).
- Atenção: A criação da política de permissões sempre subescreverá o arquivo existente. Par amanter ambos, renomeie o arquivo
extensionsPermissionSet.xml
. - É possível criar mais de uma política de permissões, por exemplo, uma rotina administrativa, uma de leitura e escrita, e outra de somente leitura.
🧾 5 - Relatórios
Usando o snippet report
foi criada a estutura básica do relatório. Como layout padrão, foi inserido o padrão RDLC.
- após a criação, o projeto foi compilado com
ctrl + shift + b
. Feito isso, o arquivo de layout foi criado automaticamente. - o arquivo
.rdl
foi aberto e editado no Microsoft Report Buider- No painel do Report Builder, selecionar: DataSet_Result > Insert > Table > Table Wizard > Chose an existing dataset > Next > Movido o campo
code
para o row group > movidos demais campos para a seção valores > Desmarcar todos as caixas > Next > Finish > SAVE.
- No painel do Report Builder, selecionar: DataSet_Result > Insert > Table > Table Wizard > Chose an existing dataset > Next > Movido o campo
Um relatório é composto por duas partes:
- Conjunto de dados (Dataset): é um arquivo
.al
que define as tabelas, campos, filtrose lógica do relatório - Layout: Arquivo RDLC, Word ou Excel que mostrará o relatório quando for gerado no BC.
Depois de instalado no BC, o cliente pode alterar ou criar novos layouts com o recurso Custom Report Layouts.
🧾 6 - Link de Ajuda
Inserido link (fictítio) para que no canto superior direito da página de lista, seja possível abrir documentação externa. O parâmetro de link de ajuda é inserido na Page List.
- Tables Overview
- Pages Overview
- Retaining table data after publishing
- Triggers Overview
- Label Data Type
- Classifying Data Sensitivity
- Classifying Data in Dynamics 365
- Create Users According to Licenses
- Microsoft® Report Builder
- Reports Overview
- Report and Document Layouts Overview
- Adding Help Links from Pages, Reports, and XMLports
- Table Extension Object
- Page Extension Object
- Subscribing to events
Author: Jonas Araujo de Avila Campos
- Julio Chaves, por preparar e conduzir o treinamento
- Colegas que seguiram até o final
- Equipe de infra e RH da Alfa People