14
United States Patent & Trademark Office America Invents Act and Alfresco Presented by Joe Wolf Software Developer, USPTO OCIO March 5, 2013

Joe Wolf: USPTO

Embed Size (px)

Citation preview

Page 1: Joe Wolf: USPTO

United States Patent & Trademark Office!

!

America Invents Act !and Alfresco!

!Presented by!

Joe Wolf!Software Developer, USPTO OCIO!

!!!

March 5, 2013!

Page 2: Joe Wolf: USPTO

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.!

Page 3: Joe Wolf: USPTO

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!!

Page 4: Joe Wolf: USPTO

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!

!!!!

Page 5: Joe Wolf: USPTO

The Architecture!

5!

Alfresco 4.0 Enterprise!

!•  Persist Documents!

COTS Case Management Product!

!•  Support Petitions Workflow!•  Send Notifications!•  Collect Payments!•  Persist Case Metadata!•  Provide Public Search!

CMIS!

Petitioners, Public

USPTO Personnel

Page 6: Joe Wolf: USPTO

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!

Page 7: Joe Wolf: USPTO

The Strategies!

•  CMIS Only!– Single, top-level “DropZone” for Case creation!!

7!

PGR2013-00001

Cases/DropZone/

createFolder OnCreateNodePolicy PGR2013-00001

Cases/2013/PGR/00/

1.  Validate uniqueness of CaseID

2.  Move folder 3.  Track CaseID in

attributeService 4.  Create case sub-

folders with ACLs

Page 8: Joe Wolf: USPTO

The Strategies!

•  CMIS Only!– Case-specific Drop Zones for filing documents!

8!

PGR2013-00001/

createDoc OnCreateNodePolicy

PGR2013-00001/Record/ Exhibit/Petitioner

cases:exhibit cases:filingParty=

petitioner cases:exhibitNo=

1001

cases:exhibit

cmis:name= Exhibit1001.pdf cases:caseId=

PGR2013-00001 1.  Move to appropriate

subfolder/rename 2.  Apply caseId aspect 3.  Apply ACLs based

on visibility, if necessary

Page 9: Joe Wolf: USPTO

The Strategies!

•  Externalized User Registration/Authentication!– Trusted connection between Case Management

Product and Alfresco!

9!

<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>  

Page 10: Joe Wolf: USPTO

The Strategies!

•  Externalized User Registration/Authentication!– Alfresco users created on demand!

10!

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;  }  

Page 11: Joe Wolf: USPTO

The Strategies!

•  Externalized User Registration/Authentication!– Dynamic group assignments based on

metadata provided in CMIS call!

11!

//  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);  }  

Page 12: Joe Wolf: USPTO

The Strategies!

•  Closed Architecture!– Folder structure reflects business view!– Content model holds key metadata!– Use CMIS!

•  Expunging!•  Reporting!•  Auditing!•  Multi-document PDF generation!

12!

Page 13: Joe Wolf: USPTO

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!

Page 14: Joe Wolf: USPTO

The End!

14!