\ No newline at end of file
diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java
new file mode 100644
index 0000000000..1c4967e7e8
--- /dev/null
+++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectItemView.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2017 Red Hat, Inc. and/or its affiliates.
+ *
+ * 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.
+ */
+
+package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import elemental2.dom.Element;
+import elemental2.dom.HTMLAnchorElement;
+import elemental2.dom.HTMLDivElement;
+import elemental2.dom.HTMLElement;
+import org.jboss.errai.ui.client.local.api.elemental2.IsElement;
+import org.jboss.errai.ui.shared.api.annotations.DataField;
+import org.jboss.errai.ui.shared.api.annotations.EventHandler;
+import org.jboss.errai.ui.shared.api.annotations.Templated;
+
+@Templated("#root")
+public class ObjectItemView implements ObjectItemPresenter.View,
+ IsElement {
+
+ @Inject
+ @Named("span")
+ @DataField("value")
+ private HTMLElement value;
+
+ @Inject
+ @DataField("resolvers")
+ private HTMLDivElement resolversContainer;
+
+ @Inject
+ @DataField("parameters-link")
+ @SuppressWarnings("PMD.UnusedPrivateField")
+ private HTMLAnchorElement parametersLink;
+
+ @Inject
+ @Named("span")
+ @DataField("parameters-count")
+ private HTMLElement parametersCount;
+
+ @Inject
+ @DataField("remove-button")
+ @SuppressWarnings("PMD.UnusedPrivateField")
+ private HTMLAnchorElement removeButton;
+
+ private ObjectItemPresenter presenter;
+
+ @Override
+ public void init(final ObjectItemPresenter presenter) {
+ this.presenter = presenter;
+ }
+
+ @EventHandler("remove-button")
+ public void onRemoveButtonClicked(final ClickEvent ignore) {
+ presenter.remove();
+ }
+
+ @EventHandler("parameters-link")
+ public void onParametersLinkClicked(final ClickEvent ignore) {
+ presenter.showParametersModal();
+ }
+
+ @Override
+ public void setValue(final String value) {
+ this.value.textContent = value;
+ }
+
+ @Override
+ public void setParametersCount(final int parametersCount) {
+ this.parametersCount.textContent = Integer.toString(parametersCount);
+ }
+
+ @Override
+ public Element getResolversContainer() {
+ return resolversContainer;
+ }
+}
diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java
new file mode 100644
index 0000000000..110d24d5d9
--- /dev/null
+++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ObjectPresenter.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2018 Red Hat, Inc. and/or its affiliates.
+ *
+ * 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.
+ */
+
+package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items;
+
+public interface ObjectPresenter {
+
+ void fireChangeEvent();
+
+ void signalParameterAddedOrRemoved();
+}
diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java
new file mode 100644
index 0000000000..a95f59cfe1
--- /dev/null
+++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModal.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2018 Red Hat, Inc. and/or its affiliates.
+ *
+ * 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.
+ */
+
+package org.jbpm.workbench.wi.client.editors.deployment.descriptor.items;
+
+import java.util.List;
+
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+import org.jboss.errai.ioc.client.api.ManagedInstance;
+import org.jbpm.workbench.wi.dd.model.Parameter;
+import org.kie.workbench.common.screens.library.client.settings.util.ListItemPresenter;
+import org.kie.workbench.common.screens.library.client.settings.util.ListPresenter;
+import org.kie.workbench.common.screens.library.client.settings.util.modal.Elemental2Modal;
+
+@Dependent
+public class ParametersModal extends Elemental2Modal {
+
+ private final ParametersListPresenter parametersListPresenter;
+ ObjectPresenter parentPresenter;
+
+ @Inject
+ public ParametersModal(final ParametersModalView view,
+ final ParametersListPresenter parametersListPresenter) {
+
+ super(view);
+ this.parametersListPresenter = parametersListPresenter;
+ }
+
+ public void setup(final List parameters,
+ final ObjectPresenter parentPresenter) {
+
+ this.parentPresenter = parentPresenter;
+
+ parametersListPresenter.setup(
+ getView().getParametersTable(),
+ parameters,
+ (parameter, presenter) -> presenter.setup(parameter, this));
+
+ super.setup();
+ }
+
+ public void add() {
+ final Parameter parameter = new Parameter(String.class.getCanonicalName(), "");
+ parametersListPresenter.add(parameter);
+ parentPresenter.signalParameterAddedOrRemoved();
+ }
+
+ public void signalParameterAddedOrRemoved() {
+ parentPresenter.signalParameterAddedOrRemoved();
+ }
+
+ public void fireChangeEvent() {
+ parentPresenter.fireChangeEvent();
+ }
+
+ @Dependent
+ public static class ParametersListPresenter extends ListPresenter {
+
+ @Inject
+ public ParametersListPresenter(final ManagedInstance itemPresenters) {
+ super(itemPresenters);
+ }
+ }
+
+ @Dependent
+ public static class ParameterItemPresenter extends ListItemPresenter {
+
+ private Parameter parameter;
+ private ParametersModal parentPresenter;
+
+ @Inject
+ public ParameterItemPresenter(final ParametersModalView.Parameter parametersModalView) {
+ super(parametersModalView);
+ }
+
+ @Override
+ public ParameterItemPresenter setup(final Parameter parameter,
+ final ParametersModal parentPresenter) {
+
+ this.parameter = parameter;
+ this.parentPresenter = parentPresenter;
+
+ view.init(this);
+ view.setType(parameter.getType());
+ view.setValue(parameter.getValue());
+ return this;
+ }
+
+ @Override
+ public Parameter getObject() {
+ return parameter;
+ }
+
+ @Override
+ public void remove() {
+ super.remove();
+ parentPresenter.signalParameterAddedOrRemoved();
+ }
+
+ public void setName(final String name) {
+ parameter.setType(name);
+ parentPresenter.fireChangeEvent();
+ }
+
+ public void setValue(final String value) {
+ parameter.setValue(value);
+ parentPresenter.fireChangeEvent();
+ }
+ }
+}
diff --git a/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html
new file mode 100644
index 0000000000..d64983f3a0
--- /dev/null
+++ b/jbpm-wb-integration/jbpm-wb-integration-client/src/main/java/org/jbpm/workbench/wi/client/editors/deployment/descriptor/items/ParametersModalView.html
@@ -0,0 +1,56 @@
+
+
+