Tehnologii XML -- Managementul conferintelor -- Design -- 2007-2008 -- info.uvt.ro

From Wikiversity
Jump to navigation Jump to search

Use cases[edit]

Am redactat un document de Use-Cases pentru proiect, pe baza unei discuţii cu domnul profesor, şi vă rog să veniţi cu completările de rigoare dacă este cazul. Documentul poate fi găsit la UseCase.doc.

Entităţi[edit]

  • Actori
    • Organizator
    • Program committee
    • Invited speaker
    • Participant
  • Date
    • Articol
      • Abstract
      • Full article
    • Review report

Activităţi[edit]

  • Organizator
    • Invită -> Program committee
    • Invită -> Invited speaker
    • Approves -> Article
    • Rejects -> Article
    • Publică -> Article / Abstract / Full article
  • Program commitee
    • Review -> Articol
      • Requests -> Abstract
      • Requests -> Full article
      • Reports -> Review report -> Organizer
  • Participant
    • Registration request
    • Submit -> Article / Abstract / Full article

Cicluri de viaţă[edit]

  • Articol
    • Proposal -> New / Deleted
      • Reprezintă doar promisiunea lucrării
    • New -> Active / Deleted
      • Reprezintă doar o propunere însoţită de document
    • Active -> Inactive / Deprecated
    • Inactive -> Deprecated
    • Deprecated -> Historic
      • Lucrarea a fost acceptată
    • Historic
      • Lucrearea va fi publicată
  • Operaţii generice
    • initiatie / deinitiate | instantiate / deinstantiate
      • se iniţializează procesul
    • commission / decommission
      • se furnizează informaţii
    • activate / deactivate
      • se prelucrează informaţiile

Constrângeri[edit]

  • Deadline

Invitare Program committee / Invited speaker[edit]

Organizator UI PC / IS
1) invitaţie email + creare cont vid
ştergere cont vid automatic 2) (ignorare)
ştergere cont vid UI refuzare 3)
modificare / validare cont UI acceptare 4)

Interfeţe utilizator[edit]

  • Organizator:
    • invitare PC/IC;
    • ştergere PC/IC;
    • liste cu:
      • PC/IS confirmaţi / neconfirmaţi;
  • Program committee / invited speaker:
    • adăugare / modificare date personale;
    • adăugare / modificare capabilităţi;

Schema bazei de date[edit]

Tabele:

  • Credentials:
    • nume de utilizator;
    • parolă;
    • tipul utilizatorului;
    • starea contului;
  • Date personale
  • Capabilităţi
  • Lucrări / articole + informaţii de stare
  • Reviews + informaţii de stare

Database Tables Description[edit]

  • Credentials [accountid*, username, password, role, accountstatus]
    • role = ORGANIZER | INVITED_SPEAKER | REVIEWER | PARTICIPANT
    • accountstatus = INACTIVE | ACTIVE
    • Obs.:
      • INACTIVE means void account.
      • This table has one “hard-coded” record:
        • [1, organizer, organizer, ORGANIZER, ACTIVE]
  • Personaldata [id*, accountid**, firstname, lastname, email, phone, country, city, university]
  • Capabilities [id*, accountid**, maindomain, domain1, domain2]
  • Papers [paperid*, accountid**, title, abstract, paperurl, status]
    • status = NEW | ON_PROCESSING | ASSIGNED | REJECTED | ACCEPTED
    • Obs:
      • NEW --> at submission
      • ON_PROCESSING --> has not been assigned to all the requested reviewers
      • ASSIGNED --> has been assigned to all reviewers
      • REJECTED --> if at least one reviewer has rejected it
      • ACCEPTED --> if all the reviewers have accepted it
  • Reviews [id*, participantaccountid*, revieweraccountid*, comment, status]
    • status = ON_PROCESSING | ACCEPTED | REJECTED
    • Obs.: * Primary Key; ** Foreign Key

The Web Services – to be developed using XAware[edit]

Used by organizer[edit]

  • CreateVoidAccount?username=...&password=...&role=...
    • role can only have 2 values: INVITED_SPEAKER | REVIEWER
    • ==> create new record in Credentials table with accountstatus = INACTIVE
<CreateVoidAccountResponse>
    <Response> OK | NOK </Response>
    <AccountId>...</AccountId>
</CreateVoidAccountResponse >
    • the above XML document structure represents the structure of the XML data returned by the XAware web service (the response)


  • ActivateAccount?accountId=...
    • ==> update the record with the given account id in the Credentials table by setting accountstatus=ACTIVE
<ActivateAccountResponse>
    <Response> OK | NOK </Response>
</ ActivateAccountResponse >
  • DeleteAccount?accountId=...
    • ==> delete the record with the given account id (active account) from the Credentials table
<DeleteAccountResponse>
    <Response> OK | NOK </Response>
</DeleteAccountResponse> 
  • GetIS-PCStatus
    • ==> select records from Credentials table where role=”INVITED_SPEAKER”
<InvitedSpeakers>
    <Member>
        <UserName> … </UserName>
        <AccountStatus> … </AccountStatus>
    </Member>
    <Member>...</Member>
    ... 
</InvitedSpeakers>
    • ==> select records from Credentials table where role=”REVIEWER”
<Reviewers>
    <Member>
        <UserName>…</UserName>
        <AccountStatus> … </AccountStatus>
    </Member>
    ... 
    <Member>…</Member>
   ...
</Reviewers>
    • OQ: Is it useful to include information from the Personaldata table in this response (like firstname, phone, email,...) ?
    • Obs. IS = Invited Speakers; PC = Program Committee

General use[edit]

  • Login?username=...&password=...
<LoginResponse>
    <Response>OK | NOK</Response>
    <AccountId> the account id </AccountId>
</ LoginResponse >

Used by IS/PC (after their account is active and they are logged-in)[edit]

  • 1. …AddPersonalData?accountId=…&firstname=…&lastname=…&email=…&phone=…&country=…&city=…&university=…
    • ==> insert new record in Personaldata table

<AddPersonalDataResponse>

<Response>OK | NOK</Response>

<AddPersonalDataResponse>

  • 2. AddCapabilities?accountId=…&maindomain=…&domain1=…&domain2=…
    • domain1, domain2 are optional
    • ==> insert new record in Capabilities table

<AddCapabilities>

<Response>OK | NOK</Response>

</AddCapabilities>

TODO[edit]

  • ... to be reviewed
  • ... to be implemented for next monday
  • ... to be continued and updated with new services

WSDL & XSD[edit]

validarea parametrilor de input prin restricţii în schema xml[edit]
  • accountId / paperId
 <xsd:restriction base="xsd:int">
   <xsd:minInclusive value="1"/>
 </xsd:restriction>
  • role
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="ORGANIZER|INVITED_SPEAKER|REVIEWER|PARTICIPANT"/>
 </xsd:restriction>
  • username
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="[a-zA-Z][\w\.\-]{5,17}"/>
 </xsd:restriction>
  • password
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="[a-zA-Z0-9][\w\.\-]{7,23}"/>
 </xsd:restriction>
  • firstname / lastname
 <xsd:restriction base="xsd:string">
   <xsd:whiteSpace value="collapse"/>
   <xsd:pattern value="[a-zA-Z][a-zA-Z\-\.\s]+"/>
 </xsd:restriction>
  • email
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="[a-zA-Z0-9][\w\-\.]+@[a-zA-Z0-9][\w\-\.]+\.[a-zA-Z]{2,3}"/>
 </xsd:restriction>
  • phone
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="[\+]?[\d]{2,20}"/>
 </xsd:restriction>
  • country / city
 <xsd:restriction base="xsd:string">
   <xsd:whiteSpace value="collapse"/>
   <xsd:pattern value="[a-zA-Z][a-zA-Z\-\.\s]+"/>
 </xsd:restriction>
  • university
 <xsd:restriction base="xsd:string">
   <xsd:whiteSpace value="collapse"/>
   <xsd:pattern value="[a-zA-Z][a-zA-Z0-9\s\-\.\,\;]+"/>
 </xsd:restriction>
  • maindomain / title / abstract
 <xsd:restriction base="xsd:string">
   <xsd:minLength value="1"/>
   <xsd:whiteSpace value="collapse"/>
 </xsd:restriction>
  • domain1 / domain2
 <xsd:restriction base="xsd:string">
   <xsd:minLength value="0"/>
   <xsd:whiteSpace value="collapse"/>
 </xsd:restriction>
  • paperurl
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="[(https?|ftp)?(\:\/\/)?]?[a-zA-Z0-9][\w\c\p{P}\p{S}\p{Zl}\p{Mn}]+" />
 </xsd:restriction>
  • paperstatus
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="NEW|ON_PROCESSING|ASSIGNED|REJECTED|ACCEPTED"/>
 </xsd:restriction>
  • accountstatus
 <xsd:restriction base="xsd:string">
   <xsd:pattern value="ACTIVE|INACTIVE"/>
 </xsd:restriction>