Your SlideShare is downloading. ×

Joe Wolf: USPTO


Published on

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. United States Patent & Trademark Office! ! America Invents Act! and Alfresco! ! Presented by ! Joe Wolf! Software Developer, USPTO OCIO! ! ! ! March 5, 2013!
  • 2. The Disclaimer!•  Views expressed in this presentation are my own and not necessarily representative of the views of the U.S. Patent & Trademark Office or Department of Commerce.!•  Discussions regarding specific software products or vendors do not constitute an endorsement of said products or vendors by the U.S. Patent & Trademark Office or Department of Commerce.!
  • 3. The Law!•  Leahy-Smith “America Invents Act” (AIA)!•  Signed September 15th, 2011!•  Introduces significant reforms! –  USPTO granted fee setting authority! –  No more Tax Code compliance strategy patents! –  First to Invent à First Inventor to File! –  Expanded Post-Grant procedures and reviews! –  And more!!
  • 4. The Requirements!•  Support filing of AIA Petitions! –  Inter Partes Review! –  Transition program for Covered Business Methods! –  Post-Grant Review !•  Collect documents! –  Papers & Exhibits! –  Public, private, or confidential visibility!•  Collect payments!•  Support PTAB workflow, email notifications!•  Provide public access to documents! !
  • 5. The Architecture! Petitioners, Public COTS Case Management Product! ! Alfresco 4.0•  Support Petitions Workflow! CMIS! Enterprise!•  Send Notifications! !•  Collect Payments! •  Persist Documents!•  Persist Case Metadata!•  Provide Public Search! USPTO Personnel 5!
  • 6. The Constraints!•  Congressionally-mandated deadline!•  First production system to use Alfresco and Case Management COTS Product!•  Case Management COTS Product limitations! –  Only supported CMIS! –  Handled user registration and authentication! –  Closed architecture! 6!
  • 7. The Strategies!•  CMIS Only! –  Single, top-level “DropZone” for Case creation! ! Cases/DropZone/ Cases/2013/PGR/00/createFolder PGR2013- OnCreateNodePolicy PGR2013- 00001 00001 1.  Validate uniqueness of CaseID 2.  Move folder 3.  Track CaseID in attributeService 4.  Create case sub- folders with ACLs 7!
  • 8. The Strategies!•  CMIS Only! –  Case-specific Drop Zones for filing documents! PGR2013-00001/Record/ PGR2013-00001/ Exhibit/Petitioner cases:exhibit cases:exhibitcreateDoc OnCreateNodePolicy cases:filingParty= cmis:name= petitioner Exhibit1001.pdf cases:exhibitNo= 1.  Move to appropriate cases:caseId= 1001 subfolder/rename PGR2013-00001 2.  Apply caseId aspect 3.  Apply ACLs based on visibility, if necessary 8!
  • 9. The Strategies!•  Externalized User Registration/Authentication! –  Trusted connection between Case Management Product and Alfresco!<servlet>      <servlet-­‐name>cmisprps</servlet-­‐name>      <servlet-­‐class>          org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet      </servlet-­‐class>      <init-­‐param>            <param-­‐name>callContextHandler</param-­‐name>            <param-­‐value>                gov.uspto.prps.AutoAuthCallContextHandler            </param-­‐value>      </init-­‐param>      <load-­‐on-­‐startup>8</load-­‐on-­‐startup>  </servlet>   9!
  • 10. The Strategies!•  Externalized User Registration/Authentication! –  Alfresco users created on demand!public  Map<String,  String>  getCallContextMap(HttpServletRequest  request)  {      //  ...extract  username  from  HTTP  request      String  ticket  =  ticketComponent.getCurrentTicket(username,  true);            AuthenticationUtil.runAs(new  RunAsWork<NodeRef>()  {          @Override          public  NodeRef  doWork()  throws  Exception  {              return  personService.getPerson(username);  //  call  has  side-­‐effect!          }      },  AuthenticationUtil.getSystemUserName());              Map<String,  String>  context  =  new  HashMap<String,  String>();      context.put(CallContext.USERNAME,  "");      context.put(CallContext.PASSWORD,  ticket);      return  context;  }   10!
  • 11. The Strategies!•  Externalized User Registration/Authentication! –  Dynamic group assignments based on metadata provided in CMIS call!//  during  execution  of  onCreateNode  policy  for  documents...    String  user  =  AuthenticationUtil.getFullyAuthenticatedUser();  String  group  =  groupName(caseId,  filingParty);                                  //  hides  PermissionService.GROUP_PREFIX  weirdness    Set<String>  groupMembers  =  authorityService              .getContainedAuthorities(AuthorityType.USER,  group,  true);    if  (groupMembers  ==  null  ||  !groupMembers.contains(user))  {      authorityService.addAuthority(group,  user);  }   11!
  • 12. The Strategies!•  Closed Architecture! –  Folder structure reflects business view! –  Content model holds key metadata! –  Use CMIS! •  Expunging! •  Reporting! •  Auditing! •  Multi-document PDF generation! 12!
  • 13. The Wish List!•  Generate code from content model XML! –  e.g. XJC (JAXB), wsdl2java, hbm2java!•  Support Webscripts written in any JSR 223- compliant language!•  CRUD in CMIS Query Language!•  Apache Chemistry to go 1.0!•  Servlet 3.0/JavaEE 6 support or URL dispatching via Spring Web! 13!
  • 14. The End! 14!