Relatório gerado pelo RAPDIS 1.0 versão gratuita. 20/10/2009
>> Relatório Projeto EU-Rent >> >> >>
Processos
• Car Rental Mini
• Atividades • Select car
var aCar: Car; begin
aCar:= [Car.allInstances->select(c | c.status = 'available' ->asSequence->first()]; [aCar].status:= ['reserved'];
[process].car:=[aCar]; end;
post SelectCar_post01: self.car.isDefined
post SelectCar_post02: self.car = Car.allInstances->select(c | c.status = 'available' ->asSequence->first() post SelectCar_post03: self.car.status = 'reserved'
• Identify client procedure identifyClient(process: Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumbe Process,aName:String,aSocSecNumber:String,aDLNumber:String,aPhone:String,anAddress:String,aBirthDate:Integer,aLicensingDate:Integer) var aClient: Client, aDrivingLicense: DrivingLicense;
begin aClient:= Create(Client); [aClient].name:= [aName]; [aClient].socSecNumber:= [aSocSecNumber]; aDrivingLicense := Create(DrivingLicense); [aDrivingLicense].number := [aDLNumber]; aDrivingLicense.licensingDate:= [aLicensingDate];
[aClient].phone:= [aPhone]; [aClient].address:= [anAddress]; [aClient].birthDate:= [aBirthDate]; [process].client:=[aClient];
end;
post IdentifyClient_post01: (Client.allInstances->select(c | c.socSecNumber = aSocSecNumber)->size() = 1) and (self.client.licensingDate.duration(self.client.licensingDate.now()) > 365*2)
post IdentifyClient_post02: client.name = aName
post IdentifyClient_post03: client.socSecNumber = aSocSecNumber post IdentifyClient_post04: client.drivingLicense.number = aDLNumber
post IdentifyClient_post05: client.drivingLicense.licensingDate = aLicensingDate post IdentifyClient_post06: client.phone = aPhone
post IdentifyClient_post07: client.address = anAddress post IdentifyClient_post08: client.birthDate = aBirthDate
• Check credit
procedure checkCredit(process:
Process,aClient:Client,aNumber:String,aFlag:String,aSegCode:String,aValid:Integer, anApCode: String) var aCard: CreditCard;
begin aCard:= Create(CreditCard); [aCard].number:= [aNumber]; [aCard].flag:= [aFlag]; [aCard].segCode:= [aSegCode]; [aCard].valid:= [aValid]; [aCard].approvalCode:= [anApCode]; Insert(Client_CreditCard, [aClient], [aCard]); [process].creditCard:=[aCard];
[process].client:=[aClient]; end;
post Check_Credit01: card.number = aNumber post Check_Credit02: card.flag = aFlag
post Check_Credit03: card.segCode = aSegCode post Check_Credit04: card.valid = aValid
post Check_Credit05: card.approvalCode = anApCode post Check_Credit06: client.card->includes(card)
• Prepare contract
procedure prepareContract(process: Process,aClient:Client,aCar:Car,aPeriod:Period) var aRent: Rent;
begin
aRent := Create(Rent);
Insert(Rent_Car, [aRent], [aCar]); Insert(Rent_Client, [aRent], [aClient]); Insert(Period_Rent, [aRent], [aPeriod]); [aCar].status:= ['rented'];
[process].rent:=[aRent]; [process].car:=[aCar]; end;
post PrepareContract_post01: (Rent.allInstances->select(r | r.client = aClient and r.car = aCar)->size() = 1) post PrepareContract_post02: aCar.status = 'rented';
• Notify aditional driver
procedure notifyAdditionalDriver(process:
Process,aName:String,aSocSecNumber:String,aDLNumber:String,aLicensingDate:Integer, aRent: Rent) var aDriver: Driver, aDrivingLicense: CrivingLicense;
begin aDriver:= Create(Driver); [aDriver].name:= [aName]; [aDriver].socSecNumber:= [aSocSecNumber]; aDrivingLicense := Create(DrivingLicense); [aDrivingLicense].number := [aDLNumber]; [aDrivingLicense].licensingDate:= [aLicensingDate];
Insert(DrivingLicensing_Driver, [aDriver]. [aDriverLicensing]); Insert(Driver_Rent, [aRent], [aDriver]);
return aRent, aDriver; end;
post NotifyAdditionalDriver_post01:
Process.allInstances.asSequence.first.driver.drivingLicense.licensingDate.duration(process.date.now())>= 730
post NotifyAdditionalDriver_post02:
let rent: Rent = Process.allInstances.asSequence.first.rent in
rent.price = rent.period.startDate.duration(rent.period.endDate) * rent.car.price * 1,25
post NotifyAdditionalDriver_post03: Process.allInstances.asSequence.first.rent.driver->size() <= 2
• Sign contract
procedure signContract(process: Process,aRent:Rent, aRentalClerk: String) begin
[aRent].rentalClerk:= [aRentalClerk]; return aRent;
end;
post SignContract_post01: aRent.signature = true
• Select period
procedure selectPeriod(process: Process,aStartDate:Integer,anEndDate:Integer) var aPeriod: Period, aRent: Rent;
begin aPeriod:= Create(Period); [aPeriod].startDate:= [aStartDate]; [aPeriod].endDate:= [anEndDate]; [process].period:=[aPeriod]; end;
post SelectPeriod01: self.period.startDate:= aStartDate; post SelectPeriod02: self.period..endDate:= anEndDate;
• Desvios/Merges
1. name=d2
[Identify Client] process.car.mileage <= 50000 [dr2] process.car.mileage > 50000 name = m2 name=d3 [m3] process.client.drivingLicense.licensingDate.duration(process.date.now())>= 730 and process.client.status <> 'barrado' [End] process.client.drivingLicense.licensingDate.duration(process.date.now()) < 730 or process.client.status = 'barrado' name=m3 name=d4
[Prepare Contract] process.creditCard.approvalCode.isDefined() [dr5] process.creditCard.approvalCode.isUndefined()
name=m4 name=dr3 random=true name=dr4
random = true name=m5 name = m1 name = d1 [dr1] teste 1 apenas [m2] teste 1 concluindo name = dr1 random=true name = dr2 random = true name=dr5 random = true • Teste caminhos • Desvios/Merges 1. name=m1 name=d1 [2] a [3]b [4]c name=d2 random=true name=m2 name=df random=true name=mf
Classes
• Domínio