Hi, Trying to modify a smart service using CDT exchanges, I'm str

Hi,

Trying to modify a smart service using CDT exchanges, I'm struggling with input and output modifications.
Wanting to add one output to the working input/output schema, I followed those steps :

Remove jar plugin
remove DCT with system management/delete after checking there was no impact (I deleted process and template as it's a development system)
modify xsd, add line, reload it both in Eclipse and Appian, check if class and appian ok
Wait for application-server.log to get "Successfully un-installed Plug-in <my plugin>"
Export new jar in Eclipse

Unfortunately, I still got this message

[Plugin Hot Deploy] ERROR com.appiancorp.plugins.LoggingPluginEventListener - Failed to enable Plug-in 'et' (com.solse.et) version 1.0.0: 'The Smart Service Module was invalid: Smart service input and output count does not match the count for the existing smart service registered as com.solypse.etde.ETDE_xlimp
Existing size: 2
Incoming size:...

OriginalPostID-58009

OriginalPostID-58009

  Discussion posts and replies are publicly visible

  • ... 3
    Existing parameter names: [ActivityClassParameterSchema[name=ET_CDTxlin.first,it=1,v=<null>], ActivityClassParameterSchema[name=ET_CDTxlin.second,it=3,v=]]
    Incoming parameter names: [ActivityClassParameterSchema[name=ET_CDTxlin.first,it=1,v=<null>], ActivityClassParameterSchema[name=ET_CDTxlin.res,it=1,v=<null>], ActivityClassParameterSchema[name=ET_CDTxlin.second,it=3,v=<null>]]
    (APNX-1-4104-005)'

    It's obvious, first and second old parameters are still there.

    I got this error several times. The only way I found to 'success' was to completely rename my plugin, which is a bit dangerous.

    So, in my idea, a plugin is not really completely unregistered by removing the jar file as it's said there :

    forum.appian.com/.../2987

    Did I forgot something ?

    Is there a way to check if a plugin is really unregistered or to remove it manually ?

    Thanks,

    Olivier

    plugin Code

              @Input(required = Re...
  • ...quired.ALWAYS)
              @Name("ET_CDTxlin.second")
              public void setSecond(String second){
                        this.second=second;
                        //sb.setSecond(second);
                        //String st = sb.getSecond();
                        log("second in " + this.second);
              }

              @Input(required = Required.ALWAYS )
              @Name("ET_CDTxlin.first")
              public void setFirst(int first){
                        this.first=first;
                        //sb.setFirst(first);
                        //int i = sb.getFirst();
                        log("first in " + this.first);
              }
                        
              @Name("ET_CDTxlin.res") <---- this function added with new xsd
              public int getOutput() {
                        first+=10;
                        return first;
              }

    actual xsd is

    <xsd:schema targetNamespace="com.solse.et"
    xmlns:appian21="http://appian.solse.com" xmlns:xsd="www.w3.org/.../XMLSchema">
    <xsd:complexType name="ET_CDTxlin">
    <xsd:sequence>
    <xsd:element name="first" type="xsd:int"/>
    <xsd:element minOccurs="0" name="second" type="xsd:string"/>
    <xsd:element name="res" type="xsd:int"/>
    </xsd:sequence>
    </xsd:complexType>
    </xs...
  • ... d:schema>

    old one was :
    <xsd:schema targetNamespace="com.solse.et"
    xmlns:appian21="http://appian.solse.com" xmlns:xsd="www.w3.org/.../XMLSchema">
    <xsd:complexType name="ET_CDTxlin">
    <xsd:sequence>
    <xsd:element name="first" type="xsd:int"/>
    <xsd:element minOccurs="0" name="second" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:schema>

  • Hi Olivier, if you change the inputs and outputs of a smart service, you will need to change the id of the smart service. The definition of the smart service in the system is never "deleted" even if you remove the plugin. The system still retains knowledge of the configuration. So, you need to change the id of the smart service. Please refer to forum.appian.com/.../Custom_Smart_Service_Plug-ins in the documentation.
  • Excellent ! Thanks Ryan, it worked immediately. It was not obvious to find that.

    For the ones that could have the same problem, I added local-id in the smart-service entry in appian-plugin.xml.
    <smart-service name="ET_xlimp" key="ET_xlimp"
    class="com.solse.et.ET_xlimp" local-id="1.1"/>