def revisionfile_workflow(obj, event):
    """ Workflow state changed """
    priority_utility = queryUtility(IRevisionWorkflowUtility, name=obj.portal_type)
    priority_utility = not priority_utility and queryUtility(IRevisionWorkflowUtility)
    priority_map = priority_utility and priority_utility.priority_map()

    if priority_map:
        revisionfile_info = IRevisionFileInfo(obj)
        revision = revisionfile_info.revision_folder()
        revision_info = IRevisionInfo(revision)
        latest = revision_info.latest()
        obj_status = revisionfile_info.status()
        latestfile_info = IRevisionFileInfo(latest)
        latest_status = latestfile_info.status()
    
        
        if priority_map.get(obj_status, {}).get('priority', -1) >= priority_map.get(latest_status, {}).get('priority', -1):
            # set status
            workflow = event.workflow
            workflow.setStatusOf(workflow.getId(), revision, {'action': event.action, 'review_state': obj_status, 'comments': '', 'actor': '', 'time': DateTime()})
            workflow.updateRoleMappingsFor(revision)
            revision.reindexObject()
            revision.reindexObjectSecurity()