OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

regrep message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: BPMN2 file: defaultGovernanceRegistryProcess.bpmn20.xml



Attached is the defaultGovernanceCollaboration.png BPMN2 collaboration 
diagram consisting of 3 pools (Submitter, Registry, Reviewer). This 
gives the overview of the Default Governance Collaboration and the 
processes for each of its 3 particpants.

Also attached is the the BPMN2 file describing the BPMN2 process for the 
Registry participant. THis is the process that will be executed by the 
RegRep server to govern objects that are governed by the Default 
Governance Collaboration.

Please note that the BPMN2 diagram is slightly older than the BPMN2 XML 
file. I will make it consistent with the file for the next draft of the 
spec.

I would like to propose that we review it during our meeting today. 
Thank you.

-- 
Regards,
Farrukh Najmi

Web: http://www.wellfleetsoftware.com


<?xml version="1.0" encoding="UTF-8"?>
<definitions id="defaultChangeReviewProcess"
  typeLanguage="http://www.w3.org/2001/XMLSchema";
  expressionLanguage="http://www.w3.org/1999/XPath"; 
  targetNamespace="urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0:governance:default:registry"
  xmlns:tns="urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0:governance:default:registry"
  xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL";
  xmlns:gov="urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0:governance"
  xmlns:rim="urn:oasis:names:tc:ebxml-regrep:xsd:rim:4.0"
  xmlns:act="urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0:actions"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
  xmlns:xlink="http://www.w3.org/1999/xlink";
  xmlns:java="http://jcp.org/en/jsr/detail?id=270";
  xmlns:roles="urn:acme:roles"
  xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd urn:oasis:names:tc:ebxml-regrep:xsd:rim:4.0  ../xsd/rim.xsd">

  <import importType="http://www.omg.org/spec/BPMN/20100524/MODEL";
    location="./regrep-core.bpmn20.xml"
    namespace="urn:oasis:names:tc:ebxml-regrep:xsd:rs:4.0:governance"/>
    
  <process id="registryProcess" name="Registry Process">
    <!-- The input data for the process -->
    <ioSpecification>
      <dataInput itemSubjectRef="requestForReviewItemDefinition" id="RequestForReviewDataInputOfProcess" />
      <dataInput itemSubjectRef="reviewOutcomeItemDefinition" id="ReviewOutcomeDataInputOfProcess" />
      <inputSet>
        <dataInputRefs>RequestForReviewDataInputOfProcess</dataInputRefs>
      </inputSet>
      <outputSet></outputSet>
    </ioSpecification>    
    
    <laneSet id="registryPool">
      <lane name="Registry" id="registryLane">
        <flowNodeRef>requestForReviewReceived</flowNodeRef>        
        <flowNodeRef>requestForReviewNotify</flowNodeRef>        
        <flowNodeRef>awaitReviewOutcome</flowNodeRef>       
        <flowNodeRef>reviewOutcomeGateway</flowNodeRef>              
        <flowNodeRef>rejectedSetStatus</flowNodeRef>        
        <flowNodeRef>approvedSetStatus</flowNodeRef>        
        <flowNodeRef>rejectedNotify</flowNodeRef>        
        <flowNodeRef>approvedNotify</flowNodeRef>        
      </lane>
    </laneSet>
    
    <!-- Registry lane flowNodes -->
    <startEvent id="requestForReviewReceived" name="RequestForReview Received">
      <dataOutput itemSubjectRef="requestForReviewItemDefinition"
        id="RequestForReviewDataOutputOfStartEvent" />
      <dataOutputAssociation>
        <sourceRef>RequestForReviewDataInputOfProcess</sourceRef>
        <targetRef>RequestForReviewDataOutputOfStartEvent</targetRef>
      </dataOutputAssociation>      
      <messageEventDefinition  messageRef="requestForReviewMessage"/>              
    </startEvent>    

    <sequenceFlow sourceRef="requestForReviewReceived" targetRef="requestForReviewNotify">
      <conditionExpression>
        ${getDataObject("RequestForReviewDataInputOfProcess")/@action == "urn:test:action:RequestForReview"}        
      </conditionExpression>
    </sequenceFlow>
    
    <sendTask id="requestForReviewNotify"  name="Notify(RequestForReview)" messageRef="tns:RequestForReviewNotificationMessage"
      operationRef="gov:sendNotificationOperation">
      <ioSpecification>
        <dataInput itemSubjectRef="tns:requestForReviewNotificationItemDefinition" id="RequestForReviewNotificationDataInputOfSendTask" />
        <inputSet>
          <dataInputRefs>RequestForReviewNotificationDataInputOfSendTask</dataInputRefs>
        </inputSet>
        <outputSet />
      </ioSpecification>
      <dataInputAssociation>
        <sourceRef>RequestForReviewDataOutputOfStartEvent</sourceRef>
        <targetRef>RequestForReviewNotificationDataInputOfSendTask</targetRef>
        <assignment>
          <from>urn:test:roles:Reviewer</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/toRole}</to>
        </assignment>        
        <assignment>
          <from>fn:concat('Request for review of object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@subject}</to>
        </assignment>        
        <assignment>
          <from>
            fn:concat('A new request has arrived for the review of object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}            
          </from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@message}</to>
        </assignment>        
      </dataInputAssociation>
    </sendTask>               
    <sequenceFlow sourceRef="requestForReviewNotify" targetRef="awaitReviewOutcome"></sequenceFlow>
    
    <intermediateCatchEvent id="awaitReviewOutcome" name="AwaitReviewOutcome">
      <dataOutput itemSubjectRef="awaitReviewOutcomeItemDefinition"
        id="ReviewOutcomeDataOutputOfEvent" />
      <dataOutputAssociation>
        <sourceRef>ReviewOutcomeDataOutputOfEvent</sourceRef>
        <targetRef>ReviewOutcomeDataInputOfProcess</targetRef>
      </dataOutputAssociation>      
      <messageEventDefinition messageRef="reviewOutcomeMessage"/>              
    </intermediateCatchEvent>
    
    <sequenceFlow sourceRef="awaitReviewOutcome" targetRef="reviewOutcomeGateway" />
    
    <exclusiveGateway name="Review Outcome" gatewayDirection="Diverging"
      id="reviewOutcomeGateway" />

    <sequenceFlow sourceRef="awaitReviewOutcome" targetRef="rejectedSetStatus" name="Reject">
      <conditionExpression xsi:type="tFormalExpression">
        ${getDataObject("ReviewOutcomeDataInputOfProcess")[@action = "urn:test:actions:Reject"]}
      </conditionExpression>
    </sequenceFlow>

    <sequenceFlow sourceRef="awaitReviewOutcome" targetRef="approvedSetStatus" name="Approve">
      <conditionExpression xsi:type="tFormalExpression">
        ${getDataObject("ReviewOutcomeDataInputOfProcess")[@action = "urn:test:actions:Approve"]}
      </conditionExpression>
    </sequenceFlow>
    
    <scriptTask name="SetStatus(Rejected)" id="rejectedSetStatus" scriptFormat="text/x-groovy">
      <ioSpecification>
        <dataInput itemSubjectRef="tns:ReviewOutcomeItem"
          id="ReviewOutcomeInputOfRejectedScriptTask" />
        <inputSet>
          <dataInputRefs>ReviewOutcomeInputOfRejectedScriptTask</dataInputRefs>
        </inputSet>
        <outputSet/>
      </ioSpecification>
      <dataInputAssociation>
        <sourceRef>ReviewOutcomeDataInputOfProcess</sourceRef>
        <targetRef>ReviewOutcomeInputOfRejectedScriptTask</targetRef>
      </dataInputAssociation>
      <script><![CDATA[
                reviewOutcome = getDataInput("ReviewOutcomeInputOfRejectedScriptTask")                 
                targetObject = reviewOutcome.getTargetObject()
                CoreCanonocalFunctions.setStatus(targetObject, "urn:test:status:Rejected")
            ]]></script>
    </scriptTask>
    
    <scriptTask name="SetStatus(Approved)" id="approvedSetStatus" scriptFormat="text/x-groovy">
      <ioSpecification>
        <dataInput itemSubjectRef="tns:ReviewOutcomeItem"
          id="ReviewOutcomeInputOfApprovedScriptTask" />
        <inputSet>
          <dataInputRefs>ReviewOutcomeInputOfApprovedScriptTask</dataInputRefs>
        </inputSet>
        <outputSet/>
      </ioSpecification>
      <dataInputAssociation>
        <sourceRef>ReviewOutcomeDataInputOfProcess</sourceRef>
        <targetRef>ReviewOutcomeInputOfApprovedScriptTask</targetRef>
      </dataInputAssociation>
      <script><![CDATA[
                reviewOutcome = getDataInput("ReviewOutcomeInputOfApprovedScriptTask")                 
                targetObject = reviewOutcome.getTargetObject()
                CoreCanonocalFunctions.setStatus(targetObject, "urn:test:status:Approved")
            ]]></script>
    </scriptTask>
    
    <sequenceFlow sourceRef="rejectedSetStatus" targetRef="rejectedNotify"></sequenceFlow>    
    <sequenceFlow sourceRef="approvedSetStatus" targetRef="approvedNotify"></sequenceFlow>
    
    <sendTask id="rejectedNotify"  name="Notify(Rejected)" messageRef="tns:RequestForReviewNotificationMessage"
      operationRef="gov:sendNotificationOperation">
      <ioSpecification>
        <dataInput itemSubjectRef="tns:rejectedNotificationItemDefinition" id="RejectedNotificationDataInputOfSendTask" />
        <inputSet>
          <dataInputRefs>RejectedNotificationDataInputOfSendTask</dataInputRefs>
        </inputSet>
        <outputSet />
      </ioSpecification>
      <dataInputAssociation>
        <sourceRef>RequestForReviewDataOutputOfStartEvent</sourceRef>
        <targetRef>RejectedNotificationDataInputOfSendTask</targetRef>
        <assignment>
          <from>urn:test:roles:Submitter</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/toRole}</to>
        </assignment>        
        <assignment>
          <from>fn:concat('Review failed for the object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@subject}</to>
        </assignment>        
        <assignment>
          <from>
            fn:concat('Reveviers have rejected the object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}            
          </from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@message}</to>
        </assignment>        
      </dataInputAssociation>
    </sendTask>               
    
    <sendTask id="approvedNotify"  name="Notify(Approved)" messageRef="tns:ApprovedNotificationMessage"
      operationRef="gov:sendNotificationOperation">
      <ioSpecification>
        <dataInput itemSubjectRef="tns:approvedNotificationItemDefinition" id="ApprovedNotificationDataInputOfSendTask" />
        <inputSet>
          <dataInputRefs>ApprovedNotificationDataInputOfSendTask</dataInputRefs>
        </inputSet>
        <outputSet />
      </ioSpecification>
      <dataInputAssociation>
        <sourceRef>RequestForReviewDataOutputOfStartEvent</sourceRef>
        <targetRef>ApprovedNotificationDataInputOfSendTask</targetRef>
        <assignment>
          <from>urn:test:roles:Submitter</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/toRole}</to>
        </assignment>        
        <assignment>
          <from>fn:concat('Review passed for object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}</from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@subject}</to>
        </assignment>        
        <assignment>
          <from>
            fn:concat('Reveviers have rejected the object with id:', ${getDataObject("RequestForReviewDataInputOfProcess")/@targetObject}            
          </from>
          <to>${getDataInput("RequestForReviewNotificationDataInputOfSendTask")/@message}</to>
        </assignment>        
      </dataInputAssociation>
    </sendTask>               
    
    <sequenceFlow sourceRef="rejectedNotify" targetRef="endEvent"></sequenceFlow>    
    <sequenceFlow sourceRef="approvedNotify" targetRef="endEvent"></sequenceFlow>    
    <endEvent id="endEvent" />
    
  </process>
  
  <itemDefinition id="requestForReviewItemDefinition" isCollection="false" itemKind="Information"
    structureRef="rim:WorkflowActionType" />
  <itemDefinition id="requestForReviewNotificationItemDefinition" isCollection="false" itemKind="Information"
    structureRef="rim:EmailMessageType" />
  
  
</definitions>

defaultGovernanceProcess.png



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]