Skip to content
Snippets Groups Projects
Commit 776fe82f authored by trantzas's avatar trantzas
Browse files

Merge branch 'productorder' into 'develop'

Productorder

See merge request !15
parents 37a1be09 52e54f84
No related branches found
No related tags found
2 merge requests!22MR for Release 2024Q4,!15Productorder
Pipeline #10353 passed
/*-
* ========================LICENSE_START=================================
* org.etsi.osl.osom
* %%
* Copyright (C) 2019 openslice.io
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =========================LICENSE_END==================================
*/
package org.etsi.osl.osom.management;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.etsi.osl.tmf.po622.model.ProductOrder;
import org.etsi.osl.tmf.po622.model.ProductOrderStateType;
import org.etsi.osl.tmf.so641.model.ServiceOrder;
import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component(value = "fetchAcknowledgedProductOrders") // bean name
public class FetchAcknowledgedProductOrders implements JavaDelegate {
private static final transient Log logger = LogFactory.getLog(FetchAcknowledgedProductOrders.class.getName());
@Autowired
private ProductOrderManager productOrderManager;
@Autowired
private ServiceOrderManager serviceOrderManager;
@Autowired
private TaskService taskService;
public void execute(DelegateExecution execution) {
logger.info("======================" + execution.getProcessDefinitionId() + "======================================");
logger.info("FetchAcknowledgedProductOrders by Product Order Repository");
List<String> ordersToBeProcessed = null;
if (execution.getVariable("productOrdersToBeProcessed") instanceof ArrayList) {
ordersToBeProcessed = (ArrayList<String>) execution.getVariable("productOrdersToBeProcessed");
for (String orderid : ordersToBeProcessed) {
logger.info("productOrdersToBeProcessed From Previous = " + orderid);
}
} else {
ordersToBeProcessed = new ArrayList<>();
}
List<String> orderlist = productOrderManager.retrieveOrdersByState( ProductOrderStateType.ACKNOWLEDGED );
if ( orderlist != null ) {
for (String orderid : orderlist) {
if ( !ordersToBeProcessed.contains( orderid ) ) {
ProductOrder sor = productOrderManager.retrieveProductOrder( orderid );
if ( sor !=null && sor.getRequestedStartDate() != null ) {
Instant instant = Instant.now() ; // Capture the current moment as seen in UTC.
boolean canStart = sor.getRequestedStartDate().toInstant().isBefore( instant ) ;
if ( canStart ) {
logger.info("Product order is scheduled to start now, orderid= "+ orderid +" date="+ sor.getRequestedStartDate().toInstant());
ordersToBeProcessed.add( orderid );
} else {
logger.info("Product order is scheduled to start later, orderid= " + orderid );
}
}
}
}
}
execution.setVariable("productOrdersToBeProcessed", ordersToBeProcessed);
}
}
/*-
* ========================LICENSE_START=================================
* org.etsi.osl.osom
* %%
* Copyright (C) 2019 openslice.io
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* =========================LICENSE_END==================================
*/
package org.etsi.osl.osom.management;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.etsi.osl.tmf.common.model.Any;
import org.etsi.osl.tmf.common.model.service.Characteristic;
import org.etsi.osl.tmf.common.model.service.Note;
import org.etsi.osl.tmf.common.model.service.ServiceSpecificationRef;
import org.etsi.osl.tmf.pcm620.model.ProductOffering;
import org.etsi.osl.tmf.pcm620.model.ProductOfferingRef;
import org.etsi.osl.tmf.pcm620.model.ProductSpecification;
import org.etsi.osl.tmf.po622.model.ProductOrder;
import org.etsi.osl.tmf.po622.model.ProductOrderItem;
import org.etsi.osl.tmf.po622.model.ProductOrderStateType;
import org.etsi.osl.tmf.po622.model.ProductOrderUpdate;
import org.etsi.osl.tmf.prm669.model.RelatedParty;
import org.etsi.osl.tmf.so641.model.ServiceOrder;
import org.etsi.osl.tmf.so641.model.ServiceOrderCreate;
import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
import org.etsi.osl.tmf.so641.model.ServiceRestriction;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import jakarta.validation.Valid;
@Component(value = "initializeProcessProductOrders") // bean name
public class InitializeProcessProductOrders implements JavaDelegate {
private static final transient Log logger = LogFactory.getLog(InitializeProcessProductOrders.class.getName());
@Autowired
private ProductOrderManager productOrderManager;
@Autowired
private ServiceOrderManager serviceOrderManager;
@Value("${spring.application.name}")
private String compname;
@Autowired
private RuntimeService runtimeService;
public void execute(DelegateExecution execution) {
logger.info("Check if there are new Product Orders for Orchestration: " + execution.getVariables().toString());
if (execution.getVariable("productOrdersToBeProcessed") instanceof ArrayList) {
List<String> ordersToBeProcessed = (ArrayList<String>) execution.getVariable("productOrdersToBeProcessed");
for (String oId : ordersToBeProcessed) {
//process each order request
processOrderRequest( oId );
}
}
}
/**
* For each product order create a service order and perform the neccessary references
* @param oId
*/
private void processOrderRequest(String oId) {
//create equivalent service order
ProductOrder prodOrder = productOrderManager.retrieveProductOrder(oId);
logger.debug("Will send message that Product Order is IN-PROGRESS orderid= " + oId );
ServiceOrder serviceOrder = createServiceOrderFromProductOrder(prodOrder);
if (serviceOrder==null) {
logger.error("Service Order is NULL " );
return;
}
ProductOrderUpdate productOrderUpd = new ProductOrderUpdate();
productOrderUpd.setState(ProductOrderStateType.INPROGRESS);
for (ProductOrderItem poi : prodOrder.getProductOrderItem() ) {
if ( poi.getProduct() != null ) {
Characteristic charact = new Characteristic();
charact.setName("_SERVICE_ORDER_ID_");
charact.setValueType("TEXT");
charact.setValue(new Any( serviceOrder.getId() ));
poi.getProduct().addProductCharacteristicItem(charact);
}
productOrderUpd.addProductOrderItemItem(poi);
}
productOrderManager.updateProducteOrder( oId, productOrderUpd );
}
private ServiceOrder createServiceOrderFromProductOrder(ProductOrder prodOrder) {
ServiceOrderCreate servOrder = new ServiceOrderCreate();
servOrder.setCategory("Automated order");
servOrder.setDescription("Automatically created for product order " + prodOrder.getId());
servOrder.setRequestedStartDate(prodOrder.getRequestedStartDate());
servOrder.setRequestedCompletionDate(prodOrder.getExpectedCompletionDate());
RelatedParty rpi = new RelatedParty();
rpi.setName("OSOM-ProductOrder");
rpi.setRole("REQUESTER");
rpi.setId("OSOM-ProductOrder");
servOrder.addRelatedPartyItem(rpi );
Note noteItemOrder = new Note();
noteItemOrder.text("Automatically created for product order " + prodOrder.getId());
noteItemOrder.setAuthor(compname);
servOrder.addNoteItem(noteItemOrder);
for (ProductOrderItem poi : prodOrder.getProductOrderItem()) {
@Valid
ProductOfferingRef poffRefpoi = poi.getProductOffering();
ProductOffering pOffer = productOrderManager.retrieveProductOffering(poffRefpoi.getId());
if (pOffer == null) {
logger.error("Product Order - ProductOffering in ProductOrderItem is NULL");
return null;
}
if ( poi.getProduct() == null ) {
logger.error("Product Order - Product in ProductOrderItem is NULL");
return null;
}
ProductSpecification pSepc =
productOrderManager.retrieveProductSpec(poi.getProduct().getProductSpecification().getId());
if (pSepc == null) {
logger.error("Product Order - ProductSpecification in Product, ProductOrderItem is NULL");
return null;
}
logger.debug("Product Order - ProductOffering name= " + pOffer.getName());
logger.debug("Product Order - ProductSpecification name= " + pSepc.getName());
for (ServiceSpecificationRef serviceSpec : pSepc.getServiceSpecification()) {
ServiceOrderItem soi = new ServiceOrderItem();
servOrder.getOrderItem().add(soi);
soi.setState(ServiceOrderStateType.ACKNOWLEDGED);
ServiceRestriction serviceRestriction = new ServiceRestriction();
ServiceSpecificationRef aServiceSpecificationRef = new ServiceSpecificationRef();
aServiceSpecificationRef.setId( serviceSpec.getId() );
aServiceSpecificationRef.setName( serviceSpec.getName());
aServiceSpecificationRef.setVersion( serviceSpec.getVersion());
serviceRestriction.setServiceSpecification(aServiceSpecificationRef);
// πρεπει να perasoyme τιμες από το product order στο service order item
// εδω debug
for (Characteristic servChar : poi.getProduct().getProductCharacteristic() ) {
servChar.setUuid(null);
serviceRestriction.addServiceCharacteristicItem(servChar);
}
Characteristic refProductOrderChar = new Characteristic();
refProductOrderChar.setName("_PRODUCT_ORDER_ID_");
refProductOrderChar.setValueType("TEXT");
refProductOrderChar.setValue(new Any( prodOrder.getId() ));
serviceRestriction.addServiceCharacteristicItem(refProductOrderChar);
Characteristic refProductOrderItemChar = new Characteristic();
refProductOrderItemChar.setName("_PRODUCT_ORDER_ITEM_ID_");
refProductOrderItemChar.setValueType("TEXT");
refProductOrderItemChar.setValue(new Any( poi.getId() ));
serviceRestriction.addServiceCharacteristicItem(refProductOrderItemChar);
soi.setService(serviceRestriction);
}
}
ServiceOrder externalSOrder = serviceOrderManager.createServiceOrder(servOrder);
return externalSOrder;
}
}
...@@ -22,13 +22,18 @@ package org.etsi.osl.osom.management; ...@@ -22,13 +22,18 @@ package org.etsi.osl.osom.management;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.etsi.osl.tmf.common.model.service.Characteristic;
import org.etsi.osl.tmf.common.model.service.Note; import org.etsi.osl.tmf.common.model.service.Note;
import org.etsi.osl.tmf.common.model.service.ResourceRef; import org.etsi.osl.tmf.common.model.service.ResourceRef;
import org.etsi.osl.tmf.common.model.service.ServiceRef; import org.etsi.osl.tmf.common.model.service.ServiceRef;
import org.etsi.osl.tmf.common.model.service.ServiceStateType; import org.etsi.osl.tmf.common.model.service.ServiceStateType;
import org.etsi.osl.tmf.po622.model.ProductOrderStateType;
import org.etsi.osl.tmf.po622.model.ProductOrderUpdate;
import org.etsi.osl.tmf.ri639.model.Resource; import org.etsi.osl.tmf.ri639.model.Resource;
import org.etsi.osl.tmf.sim638.model.Service; import org.etsi.osl.tmf.sim638.model.Service;
import org.etsi.osl.tmf.sim638.model.ServiceUpdate; import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
...@@ -54,6 +59,9 @@ public class OrderCompleteService implements JavaDelegate { ...@@ -54,6 +59,9 @@ public class OrderCompleteService implements JavaDelegate {
@Autowired @Autowired
private ServiceOrderManager serviceOrderManager; private ServiceOrderManager serviceOrderManager;
@Autowired
private ProductOrderManager productOrderManager;
@Autowired @Autowired
...@@ -112,6 +120,7 @@ public class OrderCompleteService implements JavaDelegate { ...@@ -112,6 +120,7 @@ public class OrderCompleteService implements JavaDelegate {
boolean existsInactiveInORder= false; boolean existsInactiveInORder= false;
boolean existsTerminatedInORder= false; boolean existsTerminatedInORder= false;
//boolean updateServiceOrder= false; //boolean updateServiceOrder= false;
Map<String, Characteristic> productOrderIds = new HashMap<>();
logger.info("ServiceOrder id:" + sOrder.getId()); logger.info("ServiceOrder id:" + sOrder.getId());
for (ServiceOrderItem soi : sOrder.getOrderItem()) { for (ServiceOrderItem soi : sOrder.getOrderItem()) {
...@@ -192,6 +201,12 @@ public class OrderCompleteService implements JavaDelegate { ...@@ -192,6 +201,12 @@ public class OrderCompleteService implements JavaDelegate {
allTerminatedItemsInOrder = allTerminatedItemsInOrder && soi.getState().equals( ServiceOrderStateType.COMPLETED ); allTerminatedItemsInOrder = allTerminatedItemsInOrder && soi.getState().equals( ServiceOrderStateType.COMPLETED );
logger.info("ServiceOrderItem state:" + sserviceState.toString() ); logger.info("ServiceOrderItem state:" + sserviceState.toString() );
Characteristic prodOrderChar = soi.getService().findCharacteristicByName("_PRODUCT_ORDER_ID_");
if ( prodOrderChar != null ) {
productOrderIds.put( prodOrderChar.getValue().getValue(), prodOrderChar);
}
} }
...@@ -221,6 +236,20 @@ public class OrderCompleteService implements JavaDelegate { ...@@ -221,6 +236,20 @@ public class OrderCompleteService implements JavaDelegate {
serviceOrderManager.updateServiceOrderOrder( sOrder.getId() , serviceOrderUpd); serviceOrderManager.updateServiceOrderOrder( sOrder.getId() , serviceOrderUpd);
//pass the state to related product orders, if any
for (String prodOredIds : productOrderIds.keySet()) {
ProductOrderUpdate productOrderUpd = new ProductOrderUpdate();
if ( serviceOrderUpd.getState().equals( ServiceOrderStateType.COMPLETED ) ) {
productOrderUpd.setState( ProductOrderStateType.COMPLETED );
} else if ( serviceOrderUpd.getState().equals( ServiceOrderStateType.FAILED ) ) {
productOrderUpd.setState( ProductOrderStateType.FAILED );
}
productOrderManager.updateProducteOrder(prodOredIds, productOrderUpd);
}
} }
} }
......
package org.etsi.osl.osom.management;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.ProducerTemplate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.etsi.osl.tmf.pcm620.model.ProductOffering;
import org.etsi.osl.tmf.pcm620.model.ProductSpecification;
import org.etsi.osl.tmf.po622.model.ProductOrder;
import org.etsi.osl.tmf.po622.model.ProductOrderStateType;
import org.etsi.osl.tmf.po622.model.ProductOrderUpdate;
import org.etsi.osl.tmf.so641.model.ServiceOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import jakarta.validation.constraints.NotNull;
@Service
public class ProductOrderManager {
private static final transient Log logger =
LogFactory.getLog(ProductOrderManager.class.getName());
@Autowired
private ProducerTemplate template;
@Value("${CATALOG_GET_PRODUCTORDER_IDS_BY_STATE}")
private String CATALOG_GET_PRODUCTORDER_IDS_BY_STATE = "";
@Value("${CATALOG_GET_PRODUCTORDER_BY_ID}")
private String CATALOG_GET_PRODUCTORDER_BY_ID = "";
@Value("${CATALOG_UPD_PRODUCTORDER_BY_ID}")
private String CATALOG_UPD_PRODUCTORDER_BY_ID = "";
@Value("${CATALOG_GET_PRODUCTSPEC_BY_ID}")
private String CATALOG_GET_PRODUCTSPEC_BY_ID = "";
@Value("${CATALOG_GET_PRODUCTOFFERING_BY_ID}")
private String CATALOG_GET_PRODUCTOFFERING_BY_ID = "";
public List<String> retrieveOrdersByState(ProductOrderStateType orderState) {
logger.info("will retrieve Product Orders " + orderState.toString() + " from catalog ");
try {
Map<String, Object> map = new HashMap<>();
map.put("orderstate", orderState.toString());
Object response =
template.requestBodyAndHeaders(CATALOG_GET_PRODUCTORDER_IDS_BY_STATE, "", map);
logger.debug("will retrieve Service Orders " + orderState.toString()
+ " from catalog response: " + response.getClass());
if (!(response instanceof String)) {
logger.error("List object is wrong.");
return null;
}
// String[] sor = toJsonObj( (String)response, String[].class );
ArrayList<String> sor = toJsonObj((String) response, ArrayList.class);
logger.debug("retrieveOrdersByState response is: " + response);
// return asList(sor);
return sor;
} catch (Exception e) {
logger.error("Cannot retrieve Listof Product Orders " + orderState.toString()
+ " from catalog. " + e.toString());
}
return null;
}
public ProductOrder retrieveProductOrder(String orderid) {
logger.info("will retrieve Product Order from catalog orderid=" + orderid);
try {
Object response = template.requestBody(CATALOG_GET_PRODUCTORDER_BY_ID, orderid);
if (!(response instanceof String)) {
logger.error("Product Order object is wrong.");
return null;
}
logger.debug("retrieveProductOrder response is: " + response);
ProductOrder sor = toJsonObj((String) response, ProductOrder.class);
return sor;
} catch (Exception e) {
logger.error("Cannot retrieve Product Order details from catalog. " + e.toString());
}
return null;
}
public ProductSpecification retrieveProductSpec(@NotNull String id) {
logger.info("will retrieve ProductSpecification from catalog orderid=" + id);
try {
Object response = template.requestBody(CATALOG_GET_PRODUCTSPEC_BY_ID, id);
if (!(response instanceof String)) {
logger.error("ProductSpecification object is wrong.");
return null;
}
logger.debug("retrieveProductSpecification response is: " + response);
ProductSpecification sor = toJsonObj((String) response, ProductSpecification.class);
return sor;
} catch (Exception e) {
logger.error("Cannot retrieve ProductSpecification details from catalog. " + e.toString());
}
return null;
}
public ProductOffering retrieveProductOffering(@NotNull String id) {
logger.info("will retrieve ProductOffering from catalog orderid=" + id);
try {
Object response = template.requestBody(CATALOG_GET_PRODUCTOFFERING_BY_ID, id);
if (!(response instanceof String)) {
logger.error("ProductOffering object is wrong.");
return null;
}
logger.debug("retrievProductOffering response is: " + response);
ProductOffering sor = toJsonObj((String) response, ProductOffering.class);
return sor;
} catch (Exception e) {
logger.error("Cannot retrieve ProductOffering details from catalog. " + e.toString());
}
return null;
}
static <T> T toJsonObj(String content, Class<T> valueType) throws IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.readValue(content, valueType);
}
static String toJsonString(Object object) throws IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper.writeValueAsString(object);
}
public void updateProducteOrder(String orderid, ProductOrderUpdate productOrderUpd) {
logger.info("will set Product Order in progress orderid=" + orderid);
try {
template.sendBodyAndHeader(CATALOG_UPD_PRODUCTORDER_BY_ID, toJsonString(productOrderUpd),
"orderid", orderid);
} catch (Exception e) {
logger.error("Cannot set Product Order status from catalog. " + e.toString());
}
}
}
...@@ -78,6 +78,19 @@ NFV_CATALOG_GET_NSD_BY_ID: "jms:queue:NFVCATALOG.GET.NSD_BY_ID" ...@@ -78,6 +78,19 @@ NFV_CATALOG_GET_NSD_BY_ID: "jms:queue:NFVCATALOG.GET.NSD_BY_ID"
NFV_CATALOG_UPD_DEPLOYMENT_BY_ID: "jms:queue:NFVCATALOG.UPD.DEPLOYMENT_BY_ID" NFV_CATALOG_UPD_DEPLOYMENT_BY_ID: "jms:queue:NFVCATALOG.UPD.DEPLOYMENT_BY_ID"
NFV_CATALOG_NS_DAY2_ACTION: "jms:queue:ns.action.run" NFV_CATALOG_NS_DAY2_ACTION: "jms:queue:ns.action.run"
CATALOG_GET_PRODUCTSPEC_BY_ID: "jms:queue:CATALOG.GET.PRODUCTSPEC_BY_ID"
CATALOG_ADD_PRODUCTSPEC: "jms:queue:CATALOG.ADD.PRODUCTSPEC"
CATALOG_UPD_PRODUCTSPEC: "jms:queue:CATALOG.UPD.PRODUCTSPEC"
CATALOG_UPDADD_PRODUCTSPEC: "jms:queue:CATALOG.UPDADD.PRODUCTSPEC"
CATALOG_GET_PRODUCTOFFERING_BY_ID: "jms:queue:CATALOG.GET.PRODUCTOFFERING_BY_ID"
CATALOG_GET_PRODUCTORDERS: "jms:queue:CATALOG.GET.PRODUCTORDERS"
CATALOG_GET_PRODUCTORDER_BY_ID: "jms:queue:CATALOG.GET.PRODUCTORDER_BY_ID"
CATALOG_ADD_PRODUCTORDER: "jms:queue:CATALOG.ADD.PRODUCTORDER"
CATALOG_UPD_PRODUCTORDER_BY_ID: "jms:queue:CATALOG.UPD.PRODUCTORDER_BY_ID"
CATALOG_GET_INITIAL_PRODUCTORDERS_IDS: "jms:queue:CATALOG.GET.INITIAL_PRODUCTORDERS"
CATALOG_GET_PRODUCTORDER_IDS_BY_STATE: "jms:queue:CATALOG.GET.ACKNOWLEDGED_PRODUCTORDERS"
#NS ACTIONS #NS ACTIONS
NFV_CATALOG_NSACTIONS_SCALE: "jms:queue:NSACTIONS.SCALE" NFV_CATALOG_NSACTIONS_SCALE: "jms:queue:NSACTIONS.SCALE"
......
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="ProductOrderSchedulerProcess" name="My process" isExecutable="true">
<startEvent id="timerstarteventProdOrders" name="Timer start">
<timerEventDefinition>
<timeCycle>0 0/1 * * * ?</timeCycle>
</timerEventDefinition>
</startEvent>
<serviceTask id="stFetchAcknowledgedProductOrders" name="Fetch Acknowledged Product Orders" activiti:delegateExpression="${fetchAcknowledgedProductOrders}"></serviceTask>
<sequenceFlow id="flow1" sourceRef="timerstarteventProdOrders" targetRef="stFetchAcknowledgedProductOrders"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow2" sourceRef="stFetchAcknowledgedProductOrders" targetRef="stInitializeProcessProductOrder"></sequenceFlow>
<serviceTask id="stInitializeProcessProductOrder" name="Initialize Process Product Order" activiti:delegateExpression="${initializeProcessProductOrders}"></serviceTask>
<sequenceFlow id="flow3" sourceRef="stInitializeProcessProductOrder" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_ProductOrderSchedulerProcess">
<bpmndi:BPMNPlane bpmnElement="ProductOrderSchedulerProcess" id="BPMNPlane_ProductOrderSchedulerProcess">
<bpmndi:BPMNShape bpmnElement="timerstarteventProdOrders" id="BPMNShape_timerstarteventProdOrders">
<omgdc:Bounds height="35.0" width="35.0" x="60.0" y="148.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="stFetchAcknowledgedProductOrders" id="BPMNShape_stFetchAcknowledgedProductOrders">
<omgdc:Bounds height="71.0" width="121.0" x="190.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="580.0" y="148.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="stInitializeProcessProductOrder" id="BPMNShape_stInitializeProcessProductOrder">
<omgdc:Bounds height="71.0" width="141.0" x="380.0" y="130.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="95.0" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="190.0" y="165.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="311.0" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="380.0" y="165.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
<omgdi:waypoint x="521.0" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="580.0" y="165.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
...@@ -184,7 +184,7 @@ public class ProcessOrderIntegrationTest { ...@@ -184,7 +184,7 @@ public class ProcessOrderIntegrationTest {
assertThat(specCirros.getServiceSpecCharacteristic().size() ).isEqualTo(12); assertThat(specCirros.getServiceSpecCharacteristic().size() ).isEqualTo(12);
assertThat(sorder.getOrderItem().stream().findFirst().get().getService().getServiceCharacteristic().size() ).isEqualTo(2); assertThat(sorder.getOrderItem().stream().findFirst().get().getService().getServiceCharacteristic().size() ).isEqualTo(2);
assertThat(repositoryService.createProcessDefinitionQuery().count()).isEqualTo(15); assertThat(repositoryService.createProcessDefinitionQuery().count()).isEqualTo(16);
assertThat(taskService.createTaskQuery().count()).isEqualTo(0); assertThat(taskService.createTaskQuery().count()).isEqualTo(0);
assertThat( scmocked.getRequeestedDescriptor() ).isNull(); assertThat( scmocked.getRequeestedDescriptor() ).isNull();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment