如何通过API方法删除atg中的场景

时间:2014-12-14 11:16:53

标签: atg

我已在本地配置文件夹myScenario.sdl中创建/atg/registry/data/scenarios/myScenario.sdl来创建方案

myScenario.sdl

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE process SYSTEM "dynamosystemresource:/atg/dtds/pdl/pdl_1.0.dtd">
<process author="admin" creation-time="1413804041263" enabled="false" last-modified-by="admin" modification-time="1413804191188">
  <segment migrate-subjects="true">
    <segment-name>ItemAddedToOrder</segment-name>
    <!--================================-->
    <!--== Item added to order Quantity with fraction is defined  -->
    <!--================================-->
    <event id="1">
      <event-name>atg.commerce.order.ItemAddedToOrder</event-name>
      <filter construct="event-property-filter" operator="isNotNull">
        <event-property construct="event-property">
          <property-name>quantityWithFraction</property-name>
        </event-property>
      </filter>
    </event>
    <!--================================-->
    <!--== Log a message message: Quantity With Fraction is Defines logTriggeringEvent: true  -->
    <!--================================-->
    <action id="2">
      <action-name>Log a message</action-name>
      <action-param name="message">
        <constant>Quantity With Fraction is Defines</constant>
      </action-param>
      <action-param name="logTriggeringEvent">
        <constant type="java.lang.Boolean">true</constant>
      </action-param>
    </action>
  </segment>
</process>

启用了方案:

    Registry scenarioRegistry = scenarioManager.getScenarioRegistry();
    byte[] data = (byte[]) scenarioRegistry.getItem(pScenarioPath);
    String xml = null;

    if (data != null) {
        xml = new String(data, "UTF-8");
    } else {
        Assert.fail("No scenario is existed to enable/disable");
    }
    String updatedXml;
    if (scenarioState && xml != null) {
        updatedXml = xml.replaceAll("enabled=\"false\"", "enabled=\"true\"");
    } else {
        updatedXml = xml.replaceAll("enabled=\"true\"", "enabled=\"false\"");

    }

    scenarioRegistry.putItem(pScenarioPath, updatedXml.getBytes("UTF-8"));

现在使用上面编写的代码,我可以通过分别将状态更改为false和true来禁用或启用方案。但是我想删除这个场景(请记住,我的要求是DELETE而不是DISABLE SCENARIO)。我知道使用scenarioManager.updateScenario()删除了该方案。我的理解是对的吗?

还有一件事,我知道我可以直接从ACC中删除这个场景。但是我需要通过代码而不是从ACC手动编码。

请分享您的想法!

1 个答案:

答案 0 :(得分:0)

您是否尝试过scenarioRegistry.removeItem(path);