1 package com.kodexa.client.remote;
2
3 import com.kodexa.client.Document;
4 import com.kodexa.client.pipeline.Options;
5 import com.kodexa.client.pipeline.PipelineContext;
6 import com.kodexa.client.steps.PipelineStep;
7 import lombok.extern.slf4j.Slf4j;
8
9 import java.util.Map;
10
11
12
13
14 @Slf4j
15 public class RemoteAction extends AbstractKodexaSession implements PipelineStep {
16
17 private Options options;
18 private Map<String, Object> parameters;
19
20 public RemoteAction(String organizationSlug, String serviceSlug) {
21 this(organizationSlug, serviceSlug, new Options());
22 }
23
24 public RemoteAction(String ref) {
25 super(ref);
26 }
27
28 public RemoteAction(String organizationSlug, String serviceSlug, Options options) {
29 super(organizationSlug + "/" + serviceSlug);
30 this.options = options;
31 }
32
33 public RemoteAction options(Options options) {
34 this.options = options;
35 return this;
36 }
37
38 public RemoteAction parameters(Map<String, Object> parameters) {
39 this.parameters = parameters;
40 return this;
41 }
42
43 @Override
44 public Document../../../../com/kodexa/client/Document.html#Document">Document process(Document document, PipelineContext pipelineContext) {
45
46 CloudSession session = this.createSession(CloudSessionType.service);
47 CloudExecution execution = executeService(session, document, pipelineContext, options, parameters);
48 execution = waitForExecution(session, execution);
49 mergeStores(session, execution, pipelineContext);
50 document = getOutputDocument(session, execution);
51 return document;
52 }
53
54 @Override
55 public String getName() {
56 return "Kodexa Service [" + KodexaPlatform.getUrl() + "/" + this.getRef() + "]";
57 }
58
59 }