Bank

 AISC 1999-2000 (Desenvolvimento)


Objectivos

É objectivo desta entidade gerir as transações financeiras entre as entidades que comercializam produtos. Cada entidade dispõe num determinado banco, duma conta com determinado saldo. Esta quantia aumenta ou diminui em função das transacções ocorridas. Para que a conta da entidade seja debitada, a entidade titular terá de dar a sua autorização, informando o seu banco do PIN da conta.

Índice


Informação

Descrição de termos e expressões usados no contexto do projecto a desenvolver durante as aulas práticas. Neste momento a informação é muito genérica e caracteriza fundamentalmente as conversações a nível geral.

Termos

Descrição

Português
Inglês
conta account Conta bancária afecta a um determinado titular, tem um PIN de acesso, saldotransacções. Uma conta bancária é gerida por uma entidade bancária que serve de mediador nas transacções efectuadas.
encomenda order Pedido de fornecimento de produtos segundo descrição e condições previamente descritas numa proposta de fornecimento.
Pressupõe o pedido e a aceitação prévia da proposta por parte do cliente. Se o cliente fizer a encomenda mediante uma proposta emitida pelo fornecedor, este obriga-se a fornecer nas condições descritas.

Uma estrutura record_order é descrita em Informação & Estruturas.

PIN PIN Personal Identification Number. É um código numérico (normalmente de acesso condicionado) que serve para autenticar o utilizador perante o banco. Para que possa ser efectuado um movimento de débito na conta bancária, o titular tem de fornecer o PIN da conta.
proposta proposal Documento que descreve as características do produto, preços, prazos de entrega e outras restrições.
Tanto serve para pedido (por parte do cliente/comprador) como para resposta ao pedido (por parte do fornecedor/vendedor).
O pedido de proposta não obriga o cliente a fazer a encomenda.

Uma estrutura record_proposal é descrita em Informação & Estruturas.

saldo balance Também dito de saldo efectivo. Valor numérico afecto a uma conta bancária, que representa o haver ou o dever do titular perante o banco.
No contexto deste projecto, este valor nunca é menor que 0 (zero). Deve ser considerado também o saldo disponível.
saldo disponível weighed balance Diferença entre o saldo (efectivo) da conta e total das transacções em processamento. Este valor nunca é menor que 0 (zero), ou seja, o cliente não pode fazer encomendas de valor superior ao seu saldo.
titular titular Entidade responsável, credora e devedora da conta bancária perante o banco. Pretende-se que exista uma relação directa entre as entidades existentes no sistema e os titulares das contas. Por exemplo, um vendedor, terá uma conta num banco cujo "titular" é o nome do próprio vendedor.
transacção transaction Transacção bancária que conduz à transferência de valores entre contas do comprador e vendedor (compensação). Para ser cumprida com sucesso [mais...], necessita que ambos participem e concordem com os termos do acordo, nomeadamente que confirmem os PIN's de cada conta e que a proposta seja a mesma.
Reconhecem-se além disso as expressões transacção em processamento, transacção processada, transacção anulada e transacção recebida.

Uma estrutura record_transaction é descrita em Informação & Estruturas.

transacção anulada cancelled transaction Transacção iniciada pelo vendedor mas que não foi aceite pelo banco ou pelo comprador. Se o saldo disponível for inferior ao valor da transacção ou se o PIN for incorrecto, o banco anula a transacção. Para além disso, o cliente poderá não aceitar a transacção por qualquer motivo.
transacção em processamento on-going transaction Transacção iniciada pelo vendedor e que está suspensa até que seja aceite o pedido emitido pelo banco ao comprador.
transacção processada processed transaction Transacção que foi completada com sucesso, ou seja, iniciada pelo vendedor, confirmada (e autenticada) pelo comprador e efectuadas as compensações entre contas pelo próprio banco. Esta transacção diz respeito ao comprador. O movimento compensatório na conta do vendedor corresponde a uma transacção recebida.
transacção recebida received transaction Transação que foi completada com sucesso, e que se traduz num valor a haver por parte do vendedor. Assim, apenas a conta do vendedor terá este tipo de transacção. No caso do comprador, a transacção de compensação correspondente é uma transacção processada.

Índice


Interface

Índice

Bank

A entidade Bank forma com entiadades semelhantes um sistema co-operativo, que entre si realizam as transaçções bancárias. Ou seja, num determinado conjunto de máquinas/nós/processos, podem existir vários Bank's. Portanto, para se lançar um Bank há que ter em consideração os seguintes pontos:

Ou seja, cada servidor Bank deve especificar um nome único em todos os nós e máquinas que se conhecem.

bank:start([Args]) -> ok | {error,Reason}
	Args=Name | Domain | DB_filename | Events
	Name={name, Bank_name}
	Domain={domain, Domain_name}			
	DB_filename={db_filename, DB_filename}
	Events={events, Event_level}
	Bank_name=atom()				% default=bank
	Domain_name=atom()				% default=infsys
	DB_filename=atom()				% default=Bank_name
	Event_level=all | none | number()		% default=all
	Reason=atom()
bank:start() -> ok | {error, Reason}
	Reason=atom()

Nota: Pressupõe-se que todos os parâmetros necessários estão definidos no dicionário ou são usados os valores por defeito.

Interface

Encomenda

Esta função surge um pouco fora do contexto, pelo menos o seu nome. No entanto, dado que o processo de encomenda foi sistematizado, nomeadamente no que se refere à estrutura de dados transaccionada e às conversações seguintes com o banco, esta entidade incorpora as seguintes funções:

	bank_interface:order(Order, PIN) -> ok | {error|reason}
		Order=record_order
		PIN=string()
		Reason=atom()

Esta função é executada apenas pela entidade compradora. A função complementar para o vendedor é bank_interface:start_transaction/1.

Interface

Transacção

Esta função tem como objectivos solicitar ao seu próprio Bank que realize a transacção com o Bank do comprador no montante especificado em Transaction. Dado tratar-se dum crédito, o banco não solicita o PIN do vendedor.

	bank_interface:start_transaction(Transaction) -> ok | {error, Reason}
		Transaction=record_transaction
		Reason=atom()

Esta função é executada apenas pela entidade vendedora assim . A função complementar para o vendedor é bank_interface:order/1.

InterfaceÍndice


Última actualização: 02-05-2005

 AISC 1999-2000 (Desenvolvimento)