
IBM Forms Server – Forms Services
Platform 8.0


제2판
2012년 5월 발행

© Copyright IBM® Corporation 2000, 2012


제2판
2012년 5월 발행

© Copyright IBM® Corporation 2000, 2012
접근성에 대한 IBM의 공약에 따라 이 개정판의 제품 문서에 액세스할 수 있습니다.
브라우저에서 이 문서의 로컬 사본을 저장할 수 있습니다. 각 브라우저에는 다양한 메뉴와 메뉴 옵션이 있습니다. 문서를 로컬로 저장하는 데 도움이 필요하면 브라우저 도움말을 참조하십시오.
이 문서에 대한 피드백을 제공하려는 경우 IBM 문서 피드백 웹 사이트를 참조하십시오.
IBM Forms Server – Forms Services Platform(이제부터 Forms Services Platform라고 함)은 개발자가 IBM Forms 제품을 다른 시스템과 통합하고 확장하도록 합니다.
Forms Services Platform의 모듈화는 애플리케이션의 기능을 쉽게 확장할 수 있도록 합니다. 예를 들어, Forms Services Platform을 사용하여 IBM Forms Server – Webform Server와 통합할 수 있습니다. 또한 Forms Services Platform을 사용하여 WebSphere® TX(Transformation Extender) 및 IBM Forms에 연결하여 양식, 데이터베이스 및 웹 서비스 간에 데이터를 맵핑할 수 있습니다.
IBM Forms Server – Forms Services Platform(이제부터 Forms Services Platform라고 함)은 개발자가 IBM Forms 제품을 다른 시스템과 통합하고 확장하도록 합니다. 이는 사용자가 함께 연결될 수 있는 모듈을 개발하여 애플리케이션을 통합하도록 도와주는 라이브러리 콜렉션으로 구성됩니다.
이들 라이브러리는 Java 프로그래밍 환경에 사용할 수 있으며 다음이 포함됩니다.
모듈은 Java 코드(파이프) 및 구성 데이터(파이프라인)가 포함된 OSGi 번들입니다. 일부 번들에는 외부 메커니즘(예: log4j)으로 번들을 링크할 수 있는 종속성 정보(예: 데이터베이스 드라이버)도 포함됩니다.
Forms Services Platform은 OSGi 프레임워크에서 실행합니다. 파이프, 구성 파일 및 서비스는 OSGi 번들에 포함되어 제공됩니다. 하나의 번들에 다중 서비스와 파이프 및 구성 파일이 포함될 수 있습니다.
OSGi에 대한 자세한 정보는 OSGi 스펙을 참조하십시오.
파이프는 태스크를 수행합니다. 각 태스크는 더 큰 요청의 작은 컴포넌트입니다. 예를 들어, 양식 정보를 데이터베이스에 저장하려는 경우 이 요청을 해당 컴포넌트 태스크로 분할할 필요가 있습니다. 이들 태스크에는 양식 로딩, 데이터베이스 정보 검색, 양식 메타데이터 맵핑 등이 포함될 수 있습니다. 각 태스크는 별도의 파이프에서 수행됩니다.
파이프는 매개변수를 사용하여 데이터 버켓으로 들어가고 나오는 데이터를 전달합니다. 데이터 버켓은 실행될 때 각 파이프에 차례로 전달되는 데이터 컨테이너입니다. 파이프는 데이터 버켓에서 데이터(예: 양식, 문자열, 바이너리 데이터)를 꺼낼 수 있으며 데이터 버켓에 데이터를 넣거나 이미 있는 데이터를 수정할 수 있습니다. 그것은 파이프가 데이터를 교환하고 통신하는 방법입니다.
파이프라인은 순차적인 파이프 시리즈입니다. 파이프라인은 구성된 파이프 인스턴스를 완료된 요청 프로세서로 모이게 합니다.
파이프라인을 작성하려면 파이프라인을 구성하고, 첫 번째 파이프를 트리거하며, 파이프가 태스크를 수행할 순서를 나열하는 pipeline_name.properties 파일을 작성해야 합니다.
여러 파이프가 자체적으로 필요한 구성 항목을 가질 수 있기는 하지만 파이프라인의 시작 및 종료 지점은 필요하지 않습니다. 그러나 모든 파이프라인은 헤드 파이프에서 시작합니다. 파이프라인이 시작된 다음, 각 파이프는 파이프라인에 있는 다음 파이프를 트리거해야 합니다. 이는 pidOutput 매개변수를 사용하여 다른 파이프를 현재 파이프의 출력으로 식별함으로써 수행됩니다. 파이프라인은 추가 파이프가 연결되지 않았을 때 종료됩니다.
분기는 다른 시간에 실행하는 동일한 파이프라인의 다른 부분입니다. 대부분의 파이프라인은 두 개 이상의 분기로 작성됩니다.
파이프라인이 헤드 파이프(또는 다른 요청 프로세서)에 의해 초기화될 때 헤드 파이프는 즉시 세 개의 분기로 분할합니다.
일반적으로 보기 분기는 수행 분기 후에 실행합니다. 오류 분기는 태스크를 완료할 수 없고 오류가 처리된 경우에만 실행합니다.
다른 분기는 동일한 파이프라인의 일부이지만 다른 데이터 버켓을 사용합니다. 분기 간에 데이터를 공유하려는 경우, 적절한 분기에서 사용할 수 있도록 유지하고 검색할 데이터 오브젝트를 선택해야 합니다. 파이프라인 분기 간에 데이터 오브젝트를 유지 및 검색하는 데 대한 자세한 정보는 ibm.PreserveMapPipe 및 ibm.RestoreMapPipe의 내용을 참조하십시오.
다음 다이어그램은 분기된 파이프라인의 예제를 보여줍니다.

모두 세 개의 파이프라인 분기가 사용됩니다.
파이프는 파이프라인에서 함께 작업합니다. 대부분의 파이프는 파이프라인에서 정보를 수신하고 데이터 버켓을 사용하는 다른 파이프에서 사용할 수 있도록 새 정보를 파이프라인으로 전달해야 합니다. 이는 파이프 매개변수를 사용하여 수행됩니다.
각 파이프는 JavaBeans 이름 지정 규칙을 준수하는 Getter 및 Setter 메소드를 사용하여 자체 매개변수를 정의합니다. 파이프에 들어가고 나오는 데이터를 전달하려면 JavaBean Getter 및 Setter 메소드를 작성해야 합니다. 이들 메소드는 performWork 메소드 내에서 사용되는 private 변수를 가져오거나 설정합니다. 이들 메소드 이름은 *.properties 구성 파일에 있는 구성 항목의 이름과 일치해야 합니다. 그렇지 않으면 파이프가 이들 이름을 무시합니다. Getter 및 Setter 메소드가 제공하는 데이터에는 실제 이름이 포함되지 않습니다. 대신 오브젝트에 대한 참조를 제공합니다. 참조를 실제 오브젝트로 변환하려면 evaluateGet 및 evaluateSet 메소드를 사용해야 합니다. 이들 메소드는 databucket 매개변수를 사용하여 실제 데이터 버켓 값을 performWork 메소드로 전달합니다.
수행 분기를 실행하기 전에 WorkRequest에서 추가 매개변수 정보를 설정할 수 있습니다. 자세한 정보는 Forms Services Platform API 문서를 참조하십시오.
파이프라인 매개변수를 사용하여 파이프 간에 데이터를 전달할 수 있습니다.
bundle.properties 파일에 파이프 정보를 추가할 때 파이프에 어떤 데이터가 전달되어 들어가고 나오는지 결정하고 파이프라인에 있는 그 다음 파이프를 트리거해야 합니다. 각 매개변수는 다음 템플리트를 사용하여 매개변수 순서에 포함됩니다.
<pipe id>.<pipe instance id>.parameter = parameter_type:parameter_value
pipe id는 pid라고도 합니다.
기본적으로 파이프라인 순서는 먼저 pid를 참조하여 사용 중인 파이프, 사용 중인 파이프 인스턴스, 그 다음에 사용하려는 매개변수를 식별합니다. 등호 다음에 매개변수 유형, 콜론 그리고 마지막으로 매개변수 값이 옵니다.
예를 들면 다음과 같습니다.
ibm.HeadPipe.submitXFormsSample.pidOutputs.view = pipe:ibm.LoadRequestPipe.
submitXFormsSample
단순 및 복합의 두 가지 매개변수 유형이 있습니다. 단순 매개변수는 하나의 값만 전달할 수 있는 반면, 복합 매개변수는 맵 및 목록과 같이 다중 값을 포함할 수 있습니다. 맵은 매개변수 값에 액세스하는 데 사용되는 키 및 데이터 버켓 매개변수를 나타내는 키-값 쌍입니다. 목록은 반복할 수 있는 배열입니다. 목록의 각 항목은 두 개의 키 값, 즉, 이름과 2차 키 값(로드 또는 저장)을 저장합니다.
다음 코드 샘플에서 instances는 목록입니다.
ibm.ExtractEnclosurePipe.testPipeline4.form = key:incomingform
ibm.ExtractEnclosurePipe.testPipeline4.instances.instance1.name=
string:testInstance1
ibm.ExtractEnclosurePipe.testPipeline4.instances.instance1.store=
key:instance1
ibm.ExtractEnclosurePipe.testPipeline4.instances.instance2.name=
string:testInstance2
ibm.ExtractEnclosurePipe.testPipeline4.instances.instance2.store=
key:instance2
ibm.ExtractEnclosurePipe.testPipeline6.pidOutputs.main=pipe:ibm.test.
SaveFileTestPipe.testPipeline6
파이프는 순차적으로 실행하며 태스크를 수행하기 위해 종종 이전 파이프의 데이터가 필요합니다. 따라서 파이프에 들어가고 나오는 정보를 전달할 수 있어야 합니다. 전달하는 정보 유형 및 정보가 오고 가는 위치를 정의하여 이를 수행할 수 있습니다.
XPath 표현식은 파이프를 해당 루트로 사용합니다. 데이터 버켓의 컨텐츠는 변수 $data 아래의 XPath 컨텍스트에 추가됩니다. 예를 들어, 명령 매개변수에 따라 변경되는 동적 문자열(예: 네임스페이스)을 원하는 경우 다음을 입력할 수 있습니다.
jxpath:concat('http://your_company/', $data/info/command, '/1.0')
$data가
데이터 버켓이므로 /info 세그먼트는 CommandInfo 클래스를 리턴하는
theMap.get('info')으로 분석됩니다. 그런 다음 /command 세그먼트는
getCommand 메소드로 분석되고 ((CommandInfo)theDataMap.get('info')).getCommand())로
결과가 나타납니다. ibm.ReturnDataPipe.mypipeline.content = jxpath:concat('Thank you for
submitting the form called: ', $data/formname)
# databucket contains a DOM document at the key "instanceDOM"
# the example below sets a name into that DOM document
ibm.AssignPipe.mypipeline.data.1.key = jxpath:$data/instanceDOM/data/name
ibm.AssignPipe.mypipeline.data.1.value = string:John Doe
# databucket contains a Java Map at the key "myMap"
# the example below sets the string "Blue" into "myMap" at the map
# key "favoriteColor"
ibm.AssignPipe.mypipeline.data.1.key = jxpath:$data/myMap/favoriteColor
ibm.AssignPipe.mypipeline.data.1.value = string:Blue
pipe:ibm.ReturnDataPipe.submitXFormsSample
여기서, 파이프, 키, 서비스의 경우, 영숫자 문자, 마침표(.), 밑줄 문자(_) 및 대시(-)를 사용할 수 있습니다.
문자열의 경우 모든 ISO-8859-1 문자 인코딩을 사용할 수 있으며 유니코드 문자는 유니코드 이스케이프 순서로 표시됩니다.
확장 디렉토리는 Forms Services Platform에 확장(파이프, 파이프라인 및 추가 구성 특성)을 배치하는 특수 디렉토리입니다. Forms Services Platform은 시작할 때 이 디렉토리에 있는 모든 JAR 파일 또는 특성 파일을 읽습니다. 이 메커니즘을 통해서만 Forms Services Platform에서 실행하는 사용자 자신의 파이프 및 파이프라인을 가질 수 있습니다.
확장 디렉토리의 기본 위치는 <Install directory>\extensions입니다. 대체 확장 디렉토리를 지정할 수도 있습니다. 확장 디렉토리의 대체 위치를 지정하는 방법에 대한 자세한 정보는 대체 확장 디렉토리 지정의 내용을 참조하십시오.
이 버전의 IBM Forms Server – Forms Services Platform 8.0에는 다음 새 기능이 포함됩니다.
릴리스 정보는 새 기능 및 향상된 기능의 요약, 설치 정보, 그리고 알려진 제한사항, 문제점 및 임시 해결책에 대한 설명을 제공합니다.
| 이 릴리스의 정보 | 새로운 기능 및 개선사항 | Forms Services Platform 8.0의 새로운 기능 |
| 역호환성 정보 | Forms Services Platform 시스템 요구사항 | |
| 설치, 마이그레이션, 업그레이드 및 구성 정보 | 시스템 요구사항 | Forms Services Platform 시스템 요구사항 |
| 설치 지시사항 | IBM Forms Server – Forms Services Platform 개요 | |
| 알려진 제한사항, 문제점 및 임시 해결책 | 문제점 해결 | 문제점 해결 및 지원 |
| 제한사항, 문제점 및 임시 해결책 | Forms Services Platform 기술 노트 및 플래시 | |
| 고객 지원 문의 | 고객 지원 | IBM Forms 지원 웹 페이지 |
IBM Forms Server – Forms Services Platform을 사용하려면 Forms Services Platform을 설치 및 배치한 후 사용자 환경을 구성하여 사용자 환경을 준비해야 합니다.
자세한 IBM Forms Server – Forms Services Platform 시스템 요구사항 정보는 http://www-1.ibm.com/support/docview.wss?rs=899&uid=swg27014849의 내용을 참조하십시오.
IBM Forms Server – Forms Services Platform을 배치, 실행 및 확장하는 데 필요한 파일 및 디렉토리 구조를 설치하려면 IBM Forms Server 설치 프로그램을 사용하십시오.
IBM Forms Server는 Forms 애플리케이션에서 양식 및 양식 데이터를 처리 및 관리하고, 양식을 HTML로 렌더링하며, IBM Forms 제품을 기타 지원되는 애플리케이션과 통합 및 확장할 수 있는 일련의 컴포넌트입니다. IBM Forms Server 설치 프로그램을 사용하면 Forms Services Platform를 포함하여 모든 서버 컴포넌트를 선택할 수 있습니다.
Forms Services Platform을 설치하면 설치 프로그램이 다음 디렉토리 구조를 대상 머신으로 복사합니다.
그래픽 모드 또는 콘솔 모드에서 IBM Forms Server 설치 프로그램을 사용하여 Windows에 IBM Forms Server – Forms Services Platform을 설치할 수 있습니다.
그래픽 모드로 Windows에 Forms Services Platform을 설치하려면 다음을 수행하십시오.
그래픽 모드 또는 콘솔 모드에서 IBM Forms Server 설치 프로그램을 사용하여 AIX®에 IBM Forms Server – Forms Services Platform을 설치할 수 있습니다. 그래픽 설치 프로그램을 사용하려면 X-Windows가 있어야 합니다.
그래픽 모드로 AIX에 Forms Services Platform을 설치하려면 다음을 수행하십시오.
그래픽 모드 또는 콘솔 모드에서 IBM Forms Server 설치 프로그램을 사용하여 Linux에 IBM Forms Server – Forms Services Platform을 설치할 수 있습니다. 그래픽 설치 프로그램을 사용하려면 X-Windows가 있어야 합니다.
그래픽 모드로 Linux에 Forms Services Platform을 설치하려면 다음을 수행하십시오.
그래픽 모드 또는 콘솔 모드에서 IBM Forms Server 설치 프로그램을 사용하여 Solaris에 IBM Forms Server – Forms Services Platform을 설치할 수 있습니다. 그래픽 설치 프로그램을 사용하려면 X-Windows가 있어야 합니다.
그래픽 모드로 Solaris에 Forms Services Platform을 설치하려면 다음을 수행하십시오.
콘솔 모드에서 IBM Forms Server 설치 프로그램을 사용하여 IBM i에 IBM Forms Server – Forms Services Platform을 설치할 수 있습니다.
IBM i에 Forms Services Platform을 설치하려면 다음을 수행하십시오.
IBM Forms Server – Forms Services Platform을 사용하려면 먼저 이를 배치해야 합니다.
Forms Services Platform을 WebSphere Application Server에서 배치된 서블릿으로 실행하거나 사용자 자신의 Java 코드에서 직접 실행할 수 있습니다.
WebSphere Application Server에서 IBM Forms Server – Forms Services Platform을 배치된 서블릿으로 실행하려면 이를 WebSphere Application Server에 배치해야 합니다.
WebSphere Application Server에서 IBM Forms Server – Forms Services Platform의 설치를 테스트하면 Forms Services Platform이 올바르게 설치되었는지 확인됩니다.
WebSphere Application Server에서 Forms Services Platform 설치를 테스트하려면 다음을 수행하십시오.
Java Access API를 사용하여 Java 애플리케이션에서 직접 Forms Services Platform과 통신할 수 있습니다.
사용자 정의 파이프를 컴파일하기 전에 개발 환경의 클래스 경로가 여러 파일을 포함하도록 설정해야 합니다.
클래스 경로를 설정하는 방법은 사용 중인 개발 환경에 따라 다릅니다. 세부사항은 통합 개발 환경(IDE) 문서를 참조하십시오.
IBM Forms Server – Forms Services Platform 샘플 파이프라인을 실행하려는 경우, 하나 이상의 사용 가능한 저장소 서비스가 있어야 합니다. Forms Services Platform은 배치할 수 있는 저장소 서비스의 샘플 구현과 함께 제공됩니다. 파일 시스템 저장소라는 단순 구현은 로컬 파일 시스템을 사용하여 파일을 저장합니다.
파일 시스템 저장소를 배치하려면 다음을 수행하십시오.
IBM Forms Server – Forms Services Platform에 추가 JAR 및 .properties 파일 시작을 찾을 수 있는 위치를 알려주는 대체 확장 디렉토리를 선택적으로 지정할 수 있습니다.
대체 확장 디렉토리를 지정하려면 다음을 수행하십시오.
샘플은 Forms Services Platform을 사용 및 확장하는 방법을 예시합니다.
샘플은 IBM Forms 위키에서 사용 가능합니다. 샘플을 다운로드한 후 이를 설치하고 배치하여 Forms Services Platform을 사용 및 확장하는 방법을 볼 수 있습니다.
Forms Services Platform에는 개발자가 Forms Services Platform 애플리케이션을 빌드하는 데 도움이 되는 자료가 포함되어 있습니다.
Forms Services Platform을 사용하여 애플리케이션을 개발하려면 다음 태스크를 완료하십시오.
파이프는 태스크를 수행합니다. 각 태스크는 더 큰 요청의 작은 컴포넌트입니다. 파이프를 작성하려면 파이프 소스 파일, PipeActivator 클래스, 번들 Manifest.mf 파일을 작성한 후 파이프 파일을 JAR로 번들링해야 합니다.
파이프를 작성하려면 다음 태스크를 완료해야 합니다.
파이프 소스 파일을 작성하려면 다음을 수행하십시오.
번들이 로드되었을 때 Forms Services Platform에 파이프를 등록하려면 파이프 Activator를 사용합니다. 파이프 Activator는 해당 프로세스 ID(pid) 아래에 파이프를 등록하며 파이프라인에서 이 파이프를 사용하는 데 필요합니다.
다음 샘플 코드는 세 개의 파이프를 활성화하는 방법을 예시합니다.
package com.ibm.form.platform.sample.platform.myPipes;
import com.ibm.form.platform.base.pipes.PipeActivator;
public class Activator extends PipeActivator
{
public void start()
{
this.register(MyFirstPipe.class, "ibm.sample.MyFirstPipe");
this.register(MySecondPipe.class, "ibm.sample.MySecondPipe");
this.register(MyThirdPipe.class, "ibm.sample.MyThirdPipe");
}
}
번들의 Manifest 파일은 번들 및 번들이 일부로 포함된 확장을 설명하고 구현, 번들, 클래스 경로 및 서비스 컴포넌트 정보를 제공합니다.
번들 MANIFEST.MF 파일을 작성하려면 다음을 수행하십시오.
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: developer
Build-Jdk: 1.4.2
Extension-Name: wfsp.sample.platform.newsReader.pipes
Specification-Title: WFSP NewsReader Sample Pipes
Specification-Vendor: IBM
Implementation-Vendor: IBM
Implementation-Title: wfsp.sample.platform.newsReader.pipes
Implementation-Version: 3.0.0.1-SNAPSHOT
Bundle-Activator: com.ibm.form.platform.sample.platform.newsReader.Activator
Bundle-Version: 3.0.0
Bundle-ManifestVersion: 2
Bundle-Vendor: IBM
Import-Package: com.ibm.form.platform.base.pipes,
com.ibm.form.platform.service.pipes, org.apache.commons.io
Bundle-Name: wfsp.sample.platform.newsReader.pipes
Bundle-Classpath: .
Bundle-Description: WFSP NewsReader Sample Pipes
Bundle-SymbolicName: wfsp.sample.platform.newsReader.pipes
파이프 번들링을 완료한 후 이를 JAR 파일에 번들링해야 합니다.
Apache Ant를 사용하여 파이프 파일을 번들링할 수 있습니다.
Apache Ant를 사용하여 파이프라인을 번들링하려면 다음을 수행하십시오.
이를 쉽게 수행할 수 있도록 하기 위해 사전 구성된 Eclipse 샘플 프로젝트를 IBM Forms 위키에서 사용할 수 있습니다. 샘플 프로젝트를 다운로드하여 이를 사용자 자신의 번들을 작성하기 위한 기초로 사용할 수 있으며 Eclipse를 사용하여 프로젝트, 파이프 및 패키지의 이름을 사용자 요구에 맞게 변경할 수 있습니다.
사전 구성된 Eclipse 프로젝트를 사용하여 사용자 자신의 파이프를 개발하려면 다음 태스크를 참조하십시오.
기타 플러그인에서 제공되는 모든 패키지를 MANIFEST.MF에 가져와야 합니다.
사용자 코드가 현재 번들 외에서 제공되는 패키지를 사용하는 경우 가져온 패키지 목록을 업데이트해야 합니다. Eclipse가 사용자 코드를 분석하고 종속성을 추가하게 할 수 있습니다. 종속성 패널에서 종속성 추가 링크(종속성 자동 관리 섹션에 있는)를 클릭하십시오. Eclipse가 JAR을 작성할 때 종속성이 누락된 경우 경고 메시지가 표시됩니다.
일반적으로 파이프를 새로 작성하는 것보다 기존 파이프를 복사하는 것이 더 쉽습니다.
파이프라인은 순차적인 파이프 시리즈입니다. pipeline_name.properties 파일(예를 들어, myPipeline.properties)을 사용하여 파이프라인에 파이프를 추가할 수 있습니다. 이 파일은 파이프라인을 구성하고, 첫 번째 파이프를 트리거하며, 파이프가 해당 태스크를 수행하는 순서를 나열합니다.
서블릿 또는 독립형 Java 애플리케이션에서 WebSphere Application Server에 있는 파이프라인을 실행할 수 있습니다.
WebSphere Application Server에서 파이프라인을 실행할 수 있습니다.
사용자의 서블릿이 Forms Services Platform과 상호작용하게 하려는 경우 사용자 서블릿 코드의 Java Access API를 사용할 수 있습니다.
선택적으로 사용자의 서블릿은 PlatformAccessServlet 클래스를 확장할 수 있으며, 이 클래스는 이미 해당 doGet 및 doPost 메소드에 있는 Forms Services Platform으로 서블릿 요청의 기본 전달을 제공합니다. 다음 예제와 같습니다.
package com.mycompany.mypackage;
import com.ibm.form.platform.front.access.java.PlatformJavaAccess;
import com.ibm.form.platform.front.access.java.WorkRequest;
import com.ibm.form.platform.service.view.ModelAndView;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyFSPServlet extends HttpServlet
{
private PlatformJavaAccess javaAccess;
public void init() throws ServletException
{
this.javaAccess = PlatformJavaAccess.getInstance();
super.init();
}
public void destroy()
{
PlatformJavaAccess.releaseInstance();
super.destroy();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
forwardRequestToFSP(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,
IOException
{
forwardRequestToFSP(request, response);
}
private void forwardRequestToFSP(HttpServletRequest request, HttpServletResponse
response)
{
try
{
WorkRequest theRequest = this.javaAccess.createRequest(request, response);
if (this.javaAccess.performAction(theRequest) != true)
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
else
{
ModelAndView MAndV = this.javaAccess.performView(theRequest);
if (!this.javaAccess.render(theRequest, MAndV))
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Java 애플리케이션을 사용하여 파이프라인을 실행할 수 있습니다.
독립형 Java를 사용하여 파이프라인을 실행하려면 다음을 수행하십시오.
public static void main(String[] args)
{
PlatformJavaAccess fspInstance = PlatformJavaAccess.getInstance();
ByteArrayOutputStream out = null;
FileInputStream in = null;
try
{
try
{
out = new ByteArrayOutputStream();
in = new FileInputStream("c:\\form.xfdl");
WorkRequest request = fspInstance.createRequest("/myPipeline");
request.setOutputStream(out);
request.setInputStream(in);
if (fspInstance.performAction(request))
{
ModelAndView mv = fspInstance.performView(request);
fspInstance.render(request, mv);
System.out.println(new String(out.toByteArray()));
}
}
catch (PlatformException e){}
catch (FileNotFoundException e){}
finally
{
out.close();
in.close();
}
}
catch (IOException e){}
PlatformJavaAccess.releaseInstance();
}
파이프라인이 올바르게 작업하지 않는 경우 문제점 판별에 도움이 되는 Forms Services Platform SystemOut.log 파일을 검토하십시오.
WebSphere Application Server에 배치된 경우, Forms Services Platform 로그 메시지는 서버 SystemOut.log 파일에 표시됩니다.
독립형 Forms Services Platform의 로그 메시지는 System.out으로 전달되며 콘솔에 표시됩니다.
ibm.mypipe.pipeline.debuginfo = string:true
디버그 메시지를 인쇄하려는 파이프라인의 각 파이프에 이
플래그를 추가해야 합니다. 이 플래그를 추가하면 파이프가 실행될 때 올바르게 로드되었다는 것을 표시하는
정보 메시지를 기록합니다. 그러면 사용자는 모든 파이프가 실행되는 순서를 볼 수 있습니다.각 정보 메시지가 의미하는 내용에 대한 설명은 Forms Services Platform 로그 메시지의 내용을 참조하십시오.
파이프라인이 실행 중이 아닌 경우 다음 순서도를 사용하십시오.

파이프가 로그 파일에 호출되고 있는 것을 볼 수 없는 경우 다음 순서도를 사용하여 이 문제점을 정정하십시오.

Webform Server를 사용하여 XFDL을 HTML을 자동으로 변환하려면 Forms Services Platform을 사용하십시오. 이를 수행하면 Webform Server에 애플리케이션을 연결하기 위해 IBMWorkplaceFormsServerServlet 클래스를 확장할 필요가 없습니다.
모든 파이프에 대한 기본 Translator를 정의하도록 글로벌 Translator 위치를 설정합니다.
글로벌 Translator 위치를 정의하려면 다음을 수행하십시오.
Webform Server에서 제출된 XFDL 양식 또는 XForms 인스턴스를 처리하려면 Forms Services Platform을 사용하십시오.
ibm.ReturnDataPipe 매개변수를 구성함으로써 Forms Services Platform은 Translator와 직접 통신하여 Webform Server의 기능을 사용할 수 있습니다.
ibm.ReturnDataPipe.getHtmlForm.content = key:form
ibm.ReturnDataPipe.getHtmlForm.mimetype = string:application/vnd.xfdl
ibm.ReturnDataPipe.getHtmlForm.xfdlHandlingMode = string:html
ibm.ReturnDataPipe.getHtmlForm.translatorLocation =
string:http://aServer:8085/translator
선택적: XFormsReplaceAll을 사용 중인 경우에만 관련됩니다.
예를 들면 다음과 같습니다.
ibm.ReturnDataPipe.samplePipeline.xformsReplaceAllSubmitURL =
string:/handleXFormsReplaceAll
제출된 양식을 처리하는 파이프라인도 작성해야 합니다.
# HandleXformsReplaceAll Pipeline
ibm.HeadPipe.HandleXformsReplaceAll.connection =
string:/handleXFormsReplaceAll
ibm.HeadPipe.HandleXformsReplaceAll.pidOutputs.view = pipe:ibm.ReturnDataPipe.
HandleXformsReplaceAll
ibm.HeadPipe.HandleXformsReplaceAll.pidOutputs.error = pipe:ibm.ReturnErrorPipe.
HandleXformsReplaceAll
# Action branch
# nothing
# View branch
ibm.ReturnDataPipe.HandleXformsReplaceAll.content = string:Submitted successfully.
# Error branch
ibm.ReturnErrorPipe.HandleXformsReplaceAll.errorFormat = string:html
사용자가 Webform Server에서 양식을 취소하는 경우 Forms Services Platform은 취소 메시지를 처리해야 합니다.
예를 들면 다음과 같습니다.
ibm.ReturnDataPipe.samplePipeline.cancelUrl = string:/handleCancel
취소된 양식을 처리하는 파이프라인도 작성해야 합니다.
# HandleCancel Pipeline ibm.HeadPipe.HandleCancel.connection = string:/handleCancel ibm.HeadPipe.HandleCancel.pidOutputs.view = pipe:ibm.ReturnDataPipe. HandleCancel ibm.HeadPipe.HandleCancel.pidOutputs.error = pipe:ibm.ReturnErrorPipe. HandleCancel # Action branch # nothing # View branch ibm.ReturnDataPipe.HandleCancel.content = string:The form has been canceled. # Error branch ibm.ReturnErrorPipe.HandleCancel.errorFormat = string:html
Forms Services Platform 사용자 정의 클래스 로더는 시작하는 동안 애플리케이션이 사용할 수 있는 JAR 파일에서 해당 번들을 분리시킵니다. 기본이 아닌 패키지를 추가할 수 있습니다.
Import-Package: com.PureEdge.xfdl, com.ibm.form.filenet.model,
com.ibm.form.filenet.model.util, com.ibm.form.platform.base.pipes
이렇게 하면 이들 패키지에 대한 번들 액세스가 해당 클래스에 제공됩니다. 그러나 다른 번들 내에 있는 기타 클래스에는 제공되지 않습니다.
또한 Forms Services Platform은 다음 JAR을 번들로 제공하며 Manifest 파일에 Import-Package 항목을 추가하여 이들 JAR을 사용할 수 있습니다.
Forms Services Platform에는 패키지가 부트 클래스 로더에 액세스할 수 있도록 하는 JAR을 빌드하는 데 사용할 수 있는 세 개의 파일이 있습니다.
Forms Services Platform 저장소 REST API는 Quickr® REST 호출을 사용하여 Forms Services Platform에서 호스트되는 파일 시스템 저장소에 액세스하게 하는 IBM Lotus® Quickr REST API의 서브세트입니다.
지원되는 REST 호출에 대한 자세한 정보는 IBM Forms Server – Forms Services Platform Repository REST API calls의 내용을 참조하십시오.
저장소에서 프로젝트를 삭제한 경우, IBM Forms에서는 해당 프로젝트를 사용할 수 없게 되지만, 이 프로젝트에 있는 파일은 사용자의 로컬 시스템에서 사용할 수 있습니다.
사용할 수 없는 프로젝트에서 파일을 삭제하려면 다음을 수행해야 합니다.
새 Designer 프로젝트로 파일이 이동된 후에는 이전 프로젝트를 저장소에서 안전하게 삭제할 수 있습니다.
다중 사용자가 TX 관련 기능이 포함된 양식을 제출 중인 경우, TX RMI 서버 내의 메모리 누수 때문에 제출되지 않을 수 있습니다. 제출에 실패하기 시작할 때 이를 해결하려면 TX RMI 서버를 다시 시작하십시오.
파이프라인의 문제점을 해결 중이며 파이프에 debugInfo 설정을 추가한 경우, Forms Services Platform은 파이프라인의 문제점을 해결하는 데 도움이 되는 정보 메시지를 작성합니다.
다음 표는 메시지가 의미하는 내용을 설명합니다.
| 메시지 인쇄 | 설명 |
|---|---|
| FSPDI1: URL<URL for the pipeline>에서 파이프라인을 찾을 수 없습니다. | 제공된 URL에서 실행 대기 중인 파이프라인이 없습니다. |
| FSPDI2: <URL for the pipeline>의 파이프라인을 등록했습니다. | ibm.HeadPipe가 등록되었음을 표시합니다. |
| FSPDI3: <pipe name>을(를) 찾을 수 없습니다. | 파이프라인이 올바르게 실행 중이지만 인식되지 않는 파이프를 로드하도록 요청받고 있습니다. |
| FSPDI4: 특성 파일 <property file name>을(를) 로드했습니다. | 특성 파일을 로드할 때마다 로그됩니다. |
| FSPDI5: <bundle name> 번들을 로드했습니다. | 번들을 로드할 때마다 로그됩니다. |
| FSPDI6: <pipe instance>을(를) 등록했습니다. | 파이프 인스턴스를 등록할 때마다 로그됩니다. |
| FSPDI7: <pipe> 파이프를를 <class name> 클래스로 등록했습니다. | Forms Services Platform에 파이프를 등록한 경우 로그됩니다. |
이 절에서는 이 릴리스에 대해 알려진 제한사항을 설명하고 사용 가능한 임시 해결책을 제시합니다.
파이프 JAR 파일을 컴파일할 때 대상 애플리케이션에서 사용되는 JDK와 일치하는 JDK 버전을 선택해야 합니다. 예를 들어, 파이프가 z/OS®용 WebSphere Application Server 6.0에서 실행하도록 계획된 경우, Java 1.4를 사용하도록 컴파일러를 설정합니다. 이는 WebSphere Application Server와 함께 설치된 Java 버전입니다. 파이프를 다른 서블릿 컨테이너(예: Tomcat)에서 실행하게 하려는 경우, 파이프를 서블릿 컨테이너에서 사용되는 Java 버전을 사용하도록 컴파일하십시오. 컴파일러를 특정 JDK를 사용하도록 설정하는 방법에 대한 자세한 정보는 컴파일러 또는 개발 환경과 함께 제공되는 문서를 참조하십시오.
Forms Services Platform 프로젝트를 닫는 경우, 프로젝트는 네비게이터 보기에서 닫혀진 것으로 표시되지만 컴포넌트 네비게이터 보기에서는 올바르게 닫혀진 것으로 표시되지 않습니다. 파일은 올바르게 제거되었지만 카테고리가 남아 있습니다. 그런 다음 프로젝트를 다시 열면 모두 예상한 대로 표시됩니다.
그러나 Designer를 닫고 다시 시작할 경우 프로젝트는 컴포넌트 네비게이터 보기에서 제거됩니다. 네비게이터 보기에서 프로젝트를 열 경우, 프로젝트는 Designer가 다시 시작될 때까지 컴포넌트 네비게이터 보기에 표시되지 않습니다.
이 문제점을 피하려면 Designer에서 Forms Services Platform 프로젝트를 닫지 마십시오.
화살표 키를 사용하여 Designer의 컴포넌트 네비게이터 보기를 이동하는 경우 복사하여 붙여넣기가 예상한 대로 작동하지 않을 수 있습니다. 컴포넌트 네비게이터 보기에서 새 폴더에 양식을 붙여넣으려고 할 때 이러한 일이 일어납니다.
구체적으로 말하면, 컴포넌트 네비게이터 보기에서 양식을 복사하고, 화살표 키를 사용하여 다른 폴더로 이동한 후 복사한 양식을 붙여넣을 경우 선택한 폴더가 복사된 양식을 수신하는 폴더가 아닐 수 있습니다. 실제로 양식은 선택한 폴더 바로 앞이나 뒤에 있는 폴더에 붙여넣어집니다. 뿐만 아니라, 선택한 폴더가 비어 있더라도 이름 충돌 메시지가 표시될 수 있습니다.
이 문제점을 피하려면 화살표 키를 사용하여 이동하는 대신 컴포넌트 네비게이터 보기에서 폴더를 클릭하십시오.
인스턴스 추출 및 스키마 추출 메뉴 항목이 Designer의 컴포넌트 네비게이터 보기에 항상 표시되지 않습니다.
This section provides reference information on the default pipes and services that come with IBM Forms Server – Forms Services Platform, as well as the Forms Services Platform Repository REST API, the Forms Services Platform API, and the Java Access API.
The Forms Services Platform comes with a number of standard pipes that you can use to build pipelines. Each pipe can be configured with a number of parameters. These parameters are described in the reference topic for each pipe.
Puts a list of items into the data bucket.
| Expression | Type | Description |
|---|---|---|
| data | list | This required parameter
contains a list of maps. Each map contains two parameters: key and
value.
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example takes two request parameters, ‘color' and ‘word', stores them in the data bucket. It then uses these values from the data bucket to generate a simple HTML response.
ibm.HeadPipe.assignPipeSample.connection = string:/test/pipes
/AssignPipe/test
ibm.HeadPipe.assignPipeSample.pidOutputs.view = pipe:ibm.
AssignPipe.assignPipeSample
ibm.AssignPipe.assignPipeSample.data.1.key = key:color
ibm.AssignPipe.assignPipeSample.data.1.value = jxpath:$data/
request/parameters/color
ibm.AssignPipe.assignPipeSample.data.2.key = key:word
ibm.AssignPipe.assignPipeSample.data.2.value = jxpath:$data/
request/parameters/word
ibm.AssignPipe.assignPipeSample.pidOutputs.main = pipe:ibm.
ReturnDataPipe.assignPipeSample
ibm.ReturnDataPipe.assignPipeSample.content = jxpath:concat
('<html><body><div style="color: ', $data/color, '">', $data/
word, '</div></body></html>')
ibm.ReturnDataPipe.assignPipeSample.mimetype = string:text/html
Conditionally branches a pipeline to one of two other pipes.
Depending on the errorFormat string, this pipe creates an XML or an HTML file (for viewing the errors).
| Expression | Type | Description |
|---|---|---|
| condition | jxpath, key | This parameter must evaluate
to true or false, or 1 or 0. For example:
or
|
| pidOutputs.true | pipe | The next pipe to execute in the pipeline if the condition evaluates to true. |
| pidOutputs.false | pipe | The next pipe to execute in the pipeline if the condition evaluates to false. |
In the following example, a pipeline branches if the "User-Agent" header from the request exists. Otherwise, a "does not exist" message is displayed:
ibm.BranchPipe.testBranchPipe.condition= jxpath:count($data/
request/requestHeaders/User-Agent)
ibm.BranchPipe.testBranchPipe.pidOutputs.true =
pipe:ibm.ReturnDataPipe.returnDataPipe1
ibm.BranchPipe.testBranchPipe.pidOutputs.false =
pipe:ibm.ReturnDataPipe.returnDataPipe2
ibm.ReturnDataPipe.returnDataPipe1.content =
jxpath:$data/request/requestHeaders/User-Agent
ibm.ReturnDataPipe.returnDataPipe1.mimetype =
string:text/html
ibm.ReturnDataPipe.returnDataPipe2.content =
string:The "User-Agent" header is not in the request
ibm.ReturnDataPipe.returnDataPipe2.mimetype = string:text/html
Encloses one or more XML instances into a form.
By default, this pipe replaces the identified instance (the id denoted by #.name). If it cannot find the instance named, it will append the instance as the final instance in the first data model.
| Expression | Type | Description |
|---|---|---|
| form | key | The key used to retrieve
the Form object from the data bucket. For example:
|
| instances | list of instances | The list contains a list
of maps. Each map contains two parameters: name and load. Important: The list of instances has to be 1, 2, 3...
|
| #.name | string | Name of the instance to enclose. For example:
|
| #.load | key | The instance to be enclosed into the form. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example encloses an instance into a form and then calls the PreserveMapPipe:
# Setting instance to Form
ibm.EncloseInstancePipe.samplePipeline3.form=key:newsForm
ibm.EncloseInstancePipe.samplePipeline3.instances.1.load=
key:instance
ibm.EncloseInstancePipe.samplePipeline3.instances.1.name=
string:news
ibm.EncloseInstancePipe.samplePipeline3.pidOutputs.main=
pipe:ibm.PreserveMapPipe.samplePipeline3
Extracts enclosures and data groups from a form.
| Expression | Type | Description |
|---|---|---|
| form | key | The key used to retrieve the Form object
from the data bucket. For example:
|
| enclosures | key | The key that points to
an ordered list of enclosures you want to extract using XFDL item
references. Each map contains two keys: #.name and #.store. Important: The list of enclosures must be an ordered list.
For example:1, 2, 3,
etc.
|
| #.name | string | The name of the enclosure. For example:
|
| #.store | key | The key the enclosure will be stored under. For example:
|
| datagroups | key | The key that points to an ordered list of data groups you want to extract using XFDL item references. Each map contains two keys: #.name and #.store Important: the list of datagroups must be a comma
separated ordered list. For example: 1, 2, 3,
etc.,
|
| #.name | string | The name of the data group. For example:
Note: The
page id is optional.
|
| #.store | key | The key the data group will be stored under. For example:
|
| storeAll (optional) | key | This parameter indicates that all enclosures and data groups in the form must be stored. They will all be stored under the specified key. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example retrieves the form from the data bucket, extracts two enclosures from a form, and then stores them under individual keys. When this is finished, ibm.ExtractEnclosurePipe calls the next pipe in the pipeline (ibm.PreserveMapPipe):
ibm.ExtractEnclosurePipe.testPipeline5.form = key:incomingform
ibm.ExtractEnclosuresPipe.testPipeline5.enclosures.1.name =
string:PAGE1.DATA1
ibm.ExtractEnclosuresPipe.testPipeline5.enclosures.1.store =
key:enclosure1-data
ibm.ExtractEnclosuresPipe.testPipeline5.enclosures.2.name =
string:DATA2
ibm.ExtractEnclosuresPipe.testPipeline5.enclosures.2.store =
key:enclosure2-data
ibm.ExtractEnclosurePipe.testPipeline5.pidOutputs.main =
pipe:ibm.PreserveMapPipe.nextPipe
ibm.ExtractEnclosuresPipe.testPipeline5.datagroups.1.name =
string:PAGE1.datagroup
ibm.ExtractEnclosuresPipe.testPipeline5.datagroups.1.store =
key:jxpath:concat('enclosure', $count, '-data')
ibm.ExtractEnclosuresPipe.testPipeline5.storeAll = key:jxpath:concat
('enclosure', $count, '-data')
ibm.ExtractEnclosurePipe.extractEnclosure1.storeAll = key:jxpath:concat
('enclosure', $count, '-enclosed')
Retrieves an XML instance by instance ID and stores the instance in the data bucket.
| Expression | Type | Description |
|---|---|---|
| form | key | The key used to retrieve the Form object
from the data bucket. For example:
|
| instances | list of instance | The instances list
contains a list of maps. Each map contains two parameters: name and store. Important: The list of instances has to be 1, 2, 3...
Note: You
cannot set both the instances and storeAll parameters.
|
| #.name | string | Form instance name. For example:
|
| #.store | key | The key to store the instance
within the data bucket. For example:
|
| #.storeAs | String | Optional: The format that the instance is to
be stored in. Valid values are string and dom. dom indicates that
the instance should be stored as a DOM document. For example:
|
| storeAll | key | Indicates that all instances
should be extracted. The key for store instances in the data bucket. For example:
Note: You
cannot set both the storeAll and instances parameters.
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
ibm.ExtractInstancePipe.testPipeline4.form = key:incomingform
ibm.ExtractInstancePipe.testPipeline4.instances.1.name =
string:testInstance1
ibm.ExtractInstancePipe.testPipeline4.instances.1.store = key:instance1
ibm.ExtractInstancePipe.testPipeline4.instances.2.name =
string:testInstance2
ibm.ExtractInstancePipe.testPipeline4.instances.2.store = key:instance2
ibm.ExtractInstancePipe.testPipeline6.pidOutputs.main = pipe:ibm.test.
SaveFileTestPipe.testPipeline6
The following example uses the storeAll parameter:
ibm.ExtractInstancePipe.testPipeline6.form = key:incomingform
ibm.ExtractInstancePipe.testPipeline6.storeAll =
key:jxpath:concat('enclosure', $count, '-data')
ibm.ExtractInstancePipe.testPipeline6.pidOutputs.main=
pipe:ibm.test.SaveFileTestPipe.testPipeline6
This pipe initiates every pipeline and triggers the first pipe in the Action, View, and Error pipeline branches.
| Expression | Type | Description |
|---|---|---|
| connection | String | The string that specifies the ending
of the URL for which this pipe should listen. For example:
Note: You
can only use forward slashes (/) and not backward slashes (\).
Important: Make sure your connection string names are different
and unique. For example, if you have the following connection strings: /test and /test1,
the URL pdm6/test might map to /test1.
|
| pidOutputs.action | Pipe | Specifies the first pipe in the pipeline's Action branch. For example:
|
| pidOutputs.view | Pipe | Specifies the first pipe in the pipeline's View branch. For example:
|
| pidOutputs.error | Pipe | Specifies the first pipe in the pipeline's Error branch. For example:
|
The following examples show how to configure a typical HeadPipe. In this sample, the HeadPipe listens for the "/samplePipeline3" URL string. If a matching request is detected, the HeadPipe triggers the Action branch to run the RepoLoadPipe, then triggers the View branch to run the RestoreMapPipe, and finally, triggers the Error branch to run the ReturnErrorPipe.
ibm.HeadPipe.samplePipeline3.connection = string:/samplePipeline3
ibm.HeadPipe.samplePipeline3.pidOutputs.action= pipe:ibm.RepoLoadPipe.
samplePipeline3
ibm.HeadPipe.samplePipeline3.pidOutputs.view= pipe:ibm.RestoreMapPipe.
samplePipeline3
ibm.HeadPipe.samplePipeline3.pidOutputs.error= pipe:ibm.ReturnErrorPipe.
samplePipeline3
pipeline 1 connection = string:ibm
pipeline 2 connection = string:ibm1
pipeline 3 connection = string:ibm11
pipeline 4 connection = string:ibm/submitForm
If you called domain.com/wfsp/sfsp/ibm, then pipeline 1 would run, as is expected.
If you called domain.com/wfsp/wfsp/ibm1, then pipeline 1 or 2 would run, which could result in an unexpected match.
If you called domain.com/wfsp/wfsp/ibm11, then pipeline 1, 2 or 3 would run, which could result in an unexpected match.
If you called domain.com/wfsp/wfsp/ibm/submitForm, then pipeline 1 or 4 would run, which could result in an unexpected match.
If you called domain.com/wfsp/wfsp/XXX.ibm/submitForm then no pipelines would run.
Performs an HTTP request from the IBM Forms Server – Forms Services Platform server to another server. This can be used to send or retrieve data from a remote server.
| Expression | Type | Description |
|---|---|---|
| url | jxpath, key, or string | This parameter is required. It must evaluate to a String and should contain the URL of the remote server. It may include a querystring. If url includes the protocol, it will be treated as absolute, otherwise the supplied url will be treated as relative to the current request. |
| storeAsFormat (optional) | jxpath, key, or string | Specifies how to store the response and should resolve to a String that equals string, bytes or inputstream. If not supplied, the default is bytes. If this equals string, then the response will be parsed using the character set specified within the response headers. If the encoding is not specified, UTF-8 is be used. |
| content (optional) | jxpath, key, or string | The name that is to be
given to the content when saving. Default: Untitled. For example, if it is a form the default would be Untitled.xfdl. |
| parameters (optional) | list | This optional parameter should contain a list
of maps. Each map contains two parameters: key and value. The map
values can be a jxpath, key or string but should always resolve to
a String. The contents of this parameter will be appended to the url as part of the querystring. This allows you to easily create dynamic urls. |
| headers (optional) | list | This optional parameter should contain a list
of maps. Each map contains two parameters: key and value. The map
values can be a jxpath, key or string but should always resolve to
a String. The contents of this parameter will be sent as request headers. |
| method (optional) | jxpath, key, or string | This optional parameter should resolve to “get”
or “post”. Default: post If no value is supplied, the default is used. If an invalid method is provided, an error will be thrown. |
| response | key | Stores the response back into the data bucket. The object type is defined by the storeAsFormat parameter. |
| status | key | Stores the http status code as an Integer back into the data bucket. If an error occurs while communicating with the remote site then status is set to -1. |
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
…
ibm.LoadFormPipe.httpTest.input = key:formFile
ibm.LoadFormPipe.httpTest.form = key:form
ibm.LoadFormPipe.httpTest.pidOutputs.main=pipe:ibm.HttpPipe.httpTest
ibm.HttpPipe.httpTest.url = string:http://aValidUrl
ibm.HttpPipe.httpTest.content= key:form
ibm.HttpPipe.httpTest.status = key:status
ibm.HttpPipe.httpTest.method = string:post
ibm.HttpPipe.httpTest.parameters.1.key = string:key1
ibm.HttpPipe.httpTest.parameters.1.value = string:parameterValue1
ibm.HttpPipe.httpTest.parameters.2.key = string:key2
ibm.HttpPipe.httpTest.parameters.2.value = string:parameterValue2
ibm.HttpPipe.httpTest.headers.1.key = string:header1
ibm.HttpPipe.httpTest.headers.1.value = string:headerValue1
ibm.HttpPipe.httpTest.headers.2.key = string:header2
ibm.HttpPipe.httpTest.headers.2.value = string:headerValue2
ibm.HttpPipe.httpTest.response = key:response
ibm.HttpPipe.httpTest.pidOutputs.main=pipe:ibm.BranchPipe.httpTest
ibm.BranchPipe.httpTest.condition = jxpath:$data/status = '200'
ibm.BranchPipe.httpTest.pidOutputs.true = pipe:ibm.ReturnDataPipe.httpTestTrue
ibm.BranchPipe.httpTest.pidOutputs.false = pipe:ibm.ReturnDataPipe.httpTestFalse
ibm.ReturnDataPipe.httpTestTrue.content = jxpath:concat('The form was submitted
successfully - ', $data/status, '\n', $data/response)
ibm.ReturnDataPipe.httpTestTrue.mimetype = string:text/plain
ibm.ReturnDataPipe.httpTestFalse.content = jxpath:concat('An error occurred
submitting the form - ', $data/status, '\n', $data/response)
ibm.ReturnDataPipe.httpTestFalse.mimetype = string:text/plain
Creates a form object and puts it into the data bucket.
Using a registered FormService, this pipe builds a Form object from an array of bytes (byte[]), a String, or the current Request's input stream and stores the built form in the data bucket for other pipes to use.
| Expression | Type | Description |
|---|---|---|
| form | key | The key within the data
bucket to store the form. For example: key:formNews |
| input (optional) | key | An optional key used to
indicate the form data was available from the data bucket as byte[], String,
or inputstream. For example: key:formAsByteNote: If
this parameter is not specified, the form is read in from the request's
Input Stream.
|
| flags (optional) | string | An optional comma-separated
string that indicates the settings for reading the form. For example:
Note: See "Usage notes" for a
list of valid flags.
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example shows how to configure a typical LoadFormPipe. In this sample, the LoadFormPipe stores the submitted form as an Object in the data bucket, under the key newsForm. Once this is done, the next pipe in the sequence is triggered.
ibm.LoadFormPipe.samplePipeline2.form=key:newsForm
ibm.LoadFormPipe.samplePipeline2.input=key:formAsByte
ibm.LoadFormPipe.samplePipeline2.pidOutputs.main=pipe:ibm.RepoLoadPipe.
samplePipeline2
For detailed information on flags, see Java API 사용자 매뉴얼.
Loads an incoming request and saves it into the data bucket as a byte[].
| Expression | Type | Description |
|---|---|---|
| input (optional) | key | An optional key for specifying that data
is to be loaded from the data bucket. Data should be string, byte[],
or InputStream. For example:
Note: If
this parameter is not specified, the form is read in from the request's
Input Stream.
|
| store | key | The key used to store
the output. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following examples show the various ways to load a request and store it:
# Load a request from a string
ibm.LoadRequestPipe.testPipeline2-1.input = key:myString
ibm.LoadRequestPipe.testPipeline2-1.store = key:bytesFromString
ibm.LoadRequestPipe.testPipeline2-1.pidOutputs.main = pipe:ibm.
LoadRequestPipe.testPipeline2-2
# Load a request from a byte array
ibm.LoadRequestPipe.testPipeline2-2.input = key:myByteArray
ibm.LoadRequestPipe.testPipeline2-2.store = key:bytesFromByteArray
ibm.LoadRequestPipe.testPipeline2-2.pidOutputs.main = pipe:ibm.
LoadRequestPipe.testPipeline2-3
# Load a request from the default source
ibm.LoadRequestPipe.testPipeline2-3.store = key:bytesFromRequest
ibm.LoadRequestPipe.testPipeline2-3.pidOutputs.main = pipe:ibm.test.
AssertObjectExistsTestPipe.testPipeline2-1
Calls the Mapper Service.
ibm.MapPipe retrieves mapinputdata and mapoutputdata from the data bucket, calling the Mapper Service to map the input source to the output source. It then stores the mapped output source back into the data bucket.
| Expression | Type | Description |
|---|---|---|
| map | service | Identifies which Mapper Service to use
for mapping data. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
| Expression | Type | Description |
|---|---|---|
| mapinputdata.File#.data mapinputdata.File#.name |
key, string | One or more files that
are to be used in the mapping operations. The data sub parameter points
to the data for that file in the data bucket. The name sub parameter
is the name that will be used to refer to the File later. For example:
|
| mapinputdata.TXMap | string | The name of the file that
is the TXMap that was defined by the mapinputdata.File#.name parameter. For example:
|
| mapinputdata.Input Card#.data (optional) | key | TXMaps can have zero or
more input cards. If you want the input for any of these cards to
come from data in the data bucket you can specify the card number
and the key from which you want to get the input. For example:
|
| mapinputdata.Output Card#.data (optional) | key | TXMaps can have zero or
more output cards. If you want the output for any of these cards to
be written into the data bucket you can specify the card number and
the key to which you want to write the output. For example:
|
For this example we have some XML instance data in the data bucket called formdata that has been extracted from a Form. We want to use TX to transform this data into an HTML response page that will be returned to the user showing them the results of submitting the Form.
ibm.MapPipe.simpletx.map=service:mapping.impl.tx
ibm.MapPipe.simpletx.mapinputdata.File1.data = key:txmap
ibm.MapPipe.simpletx.mapinputdata.File1.name = string:FormDataMap.mmc
ibm.MapPipe.simpletx.mapinputdata.TXMap = string:FormDataMap.mmc
ibm.MapPipe.simpletx.mapinputdata.InputCard1.data = key:formdata
ibm.MapPipe.simpletx.mapoutputdata.OutputCard1.data = key:outputdata
In this example there is only one file called FormDataMap.mmc that file is loaded from the data bucket under the name txmap.
The next parameter defines which TXMap we are running. In this example it is the file FormDataMap.mmc.
When the map was designed it was created with one inputcard and one outputcard. The inputcard is the XML instance, so we will override our TXMaps first inputcard to get its data from the key formdata in the data bucket.
Lastly we want the output from the Map to be written back into the data bucket so we can use later in the pipeline. We override the output card to write its data to the key outputdata in the data bucket.
ibm.MapPipe.simpletx.mapinputdata.File2.data =
key:supportMap
ibm.MapPipe.simpletx.mapinputdata.File2.name =
string:calculateTotal.mmc
Parses XML into a DOM Document, allowing subsequent pipes to access the Document using JXPath.
| Expression | Type | Description |
|---|---|---|
| input | key | The key used to load the
XML from the data bucket. The XML can be of type:
|
| result | key | The key used to store the result back into the data bucket. The result will be of type org.w3c.dom.Document. |
| pidOutputs.main | Pipe | The next pipe to execute. |
ibm.ExtractInstancePipe.parseXMLTest.form=key:form ibm.ExtractInstancePipe.parseXMLTest.instances.1.name = string:DataInstance ibm.ExtractInstancePipe.parseXMLTest.instances.1.store = key:dataXML ibm.ExtractInstancePipe.parseXMLTest.pidOutputs.main=pipe:ibm.ParseXMLPipe. parseXMLTest ibm.ParseXMLPipe.parseXMLTest.input = key:dataXML ibm.ParseXMLPipe.parseXMLTest.result = key:dataDOM ibm.ParseXMLPipe.parseXMLTest.pidOutputs.main=pipe:ibm.BranchPipe.parseXMLTest ibm.BranchPipe.parseXMLTest.condition = jxpath:$data/dataDOM/data/page1/Section/ EntryBox = 'orange' ibm.BranchPipe.parseXMLTest.pidOutputs.true = pipe:ibm.ReturnDataPipe. parseXMLTestTrue ibm.BranchPipe.parseXMLTest.pidOutputs.false = pipe:ibm.ReturnDataPipe. parseXMLTestFalse ibm.ReturnDataPipe.parseXMLTestTrue.content = string: The value was equal to 'orange' ibm.ReturnDataPipe.parseXMLTestTrue.mimetype = string:text/plain ibm.ReturnDataPipe.parseXMLTestFalse.content = string: The value was not equal to 'orange' ibm.ReturnDataPipe.parseXMLTestFalse.mimetype = string:text/plain
Stores information from the data bucket, making it available to use in other pipeline branches.
For example, you might collect form data using the Action branch and then preserve that data using PreserveMapPipe so that it is available to the View branch for displaying to the user.
| Expression | Type | Description |
|---|---|---|
| keys | string | List of keys to be stored. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example show how to configure a typical PreserveMapPipe. In this case, only values with the key "newsForm" are preserved.
ibm.PreserveMapPipe.samplePipeline3.keys = string:newsForm
Prints a form using Webform Server with the resulting information placed into the data bucket.
| Expression | Type | Description |
|---|---|---|
| form | key | The form to print. |
| storeAs | key | The key name that will be given to the printed output data being stored in the data bucket. |
| translatorLocation (optional) | string | The location of the Translator
where the printing is to occur. For example:
|
| returnType (optional) | string | The format that the printed
data will be in (not case sensitive). Values are:
For example:
|
| printScrollbarsOn Fields (optional) | string | Determines if scroll bars should be printed on fields. |
| printClassic Checkboxes (optional) | string | Determines if check boxes should be printed as check marks instead of x. |
| printRadioToCheck (optional) | string | Determines if radio buttons should look like check boxes when printed. |
| printRadiosEmpty (optional) | string | Determines if radio buttons should be printed empty. |
| printPageWidthInches (optional) | string | Printable width – in inches – for a page. |
| printPageHeight Inches (optional) | string | Printable height – in inches – for a page. |
| pidOutputs.main | pipe | Triggers the next pipe
in the pipeline. For example:
|
ibm.PrintXFDLPipe.sample.form= key:form
ibm.PrintXFDLPipe.sample.storeAs = key:PrintedForm
ibm.PrintXFDLPipe.sample.returnType = string:Pdf
ibm.PrintXFDLPipe.sample.translatorLocation = string:http://localhost:8085/
translator
ibm.PrintXFDLPipe.sample.printScrollbarsOnFields = string:true
ibm.PrintXFDLPipe.sample.printClassicCheckboxes = string:true
ibm.PrintXFDLPipe.sample.printRadioToCheck = string:true
ibm.PrintXFDLPipe.sample.printRadiosEmpty = string:true
ibm.PrintXFDLPipe.sample.printPageWidthInches = string:7
ibm.PrintXFDLPipe.sample.printPageHeightInches = string:9.5
ibm.PrintXFDLPipe.sample.pidOutputs.main = pipe:ibm.CallPipelinePipe.
ReturnDataPipe
ibm.PrintXFDLPipe uses the Webform Server Translator component's built in Print Service servlet. Most of the configuration parameters are passed in on the request to the Print Service servlet. If any changes occur to the parameters that the Print Service servlet accepts, then similar changes will need to be made to this pipe.
Loads a file from a repository.
| Expression | Type | Description |
|---|---|---|
| repo | string | The name of the repository from which
you want to load a file. For example:
|
| path | string | The path and filename
of the file inside the repository. For example:
|
| storeAs | key | The key used to store
the file into the data bucket as byte[], String,
or Inputstream. For example:
|
| storeAsFormat (optional) | string | The format used to store
the file in the data bucket. Valid values are:
|
| pidOutputs.main | pipe | Triggers the next pipe
in the pipeline. For example:
|
The following example shows how to configure a typical RepoLoadPipe. In this sample, the RepoLoadPipe loads the newsForm.xfdl file from the local File System Repository and stores it to the data bucket using the inputStream key. Once complete, LoadFormPipe is called.
ibm.RepoLoadPipe.samplePipeline3.repo=string:SDK-repository0
ibm.RepoLoadPipe.samplePipeline3.path=string:sample/newsForm.xfdl
ibm.RepoLoadPipe.samplePipeline3.storeAs=key:formAsBytes
ibm.RepoLoadPipe.samplePipeline3.storeAsFormat=string:inputStream
ibm.RepoLoadPipe.samplePipeline3.pidOutputs.main=
pipe:ibm.LoadFormPipe.samplePipeline3
An example that will not work:
RepoLoadPipe a form, store as inputstream -> RepoStorePipe the same form ->
ReturnDataPipe the same form
RepoLoadPipe a form, store as inputstream -> RepoStorePipe the same form ->
RepoLoadPipe the same form -> ReturnDataPipe the same form
Filters a Repository REST operation from a URL and then calls the pipeline corresponding to that REST operation.
RepoRESTPipe reads everything after path in the URL and then maps it to a particular REST call. If a match is found, RepoRESTPipe invokes the appropriate pipeline. For example, if filter = "/myPipeline/" and the inbound URL is http://server/wfsp/myPipeline/libraries/feed then this pipe will strip everything up to and including "/myPipeline/". The resultant string—libraries/feed—will then be matched against a supported set of REST API calls.
See IBM Forms Server – Forms Services Platform Repository REST API calls for details.
| Expression | Type | Description |
|---|---|---|
| filter | String | The root path of the pipeline; the value of the ibm.HeadPipe.Pid.connection. |
| repos | List | A list of maps containing
two parameters: key and value:
The map values can be a jxpath, key or string, but should always resolve to a String. This list represents the file system repositories that can be accessed by the Forms Services Platform Repository REST API. (In Lotus Quickr these are be called libraries.) |
| storeContentAs | Key | The key that will be used to store the content stream into the data bucket. |
| storeMimetypeAs | Key | The key that will be used to store the mimetype string into the data bucket. |
| pidOutputs.main | Pipe | Triggers the next pipe in the pipeline. |
In the following example, the RepoRESTPipe configuration assumes that headPipe.sample.connection = string:/myPipeline/
ibm.RepoRESTPipe.sample.filter= string:/myPipeline/
ibm.RepoRESTPipe.sample.repos.1.key = string:library1
ibm.RepoRESTPipe.sample.repos.1.value = string:FSRepository1
ibm.RepoRESTPipe.sample.repos.2.key = string:library2
ibm.RepoRESTPipe.sample.repos.2.value = string:FSRepository2
ibm.RepoRESTPipe.sample.repos.3.key = string:library3
ibm.RepoRESTPipe.sample.repos.3.value = string:FSRepository3
ibm.RepoRESTPipe.sample.storeContextAs = key:ibm.RepoRESTPipe.
content
ibm.RepoRESTPipe.sample.storeMimetypeAs = key:ibm.RepoRESTPipe.
mimetype
ibm.RepoRESTPipe.sample.pidOutputs.main = pipe:ibm.ReturnDataPipe.
sample
ibm.FSRepository.FSRepository1.name = FSRepository1
ibm.FSRepository.FSRepository1.description = Library Repository
ibm.FSRepository.FSRepository1.root = D:/Repositories/
Libraries/FSRepository1
This file system repository code needs to be in a properties
file in the Forms Services Platform's
extensions directory. Each repository specified above has to be defined
similarly.Stores data and metadata to a specified location in a repository.
| Expression | Type | Description |
|---|---|---|
| repo | string | The name of the repository to store the data in. |
| path | string | The desired path of the
created file. For example:
|
| data | key | The data to store in the
key to retrieve the data from the data bucket. This can store String,
byte[], or InputStream. For example:
|
| generateUniqueName (optional) | boolean | Specifies whether or not
to ensure the created file has a unique name. If not specified, the
default value for this parameter is true. For example:
Note: A value of false may
cause an existing file to be overwritten.
|
| actualPath (optional) | key | The actual path of the created file. This may be different from the path specified in the path parameter, especially if the generateUniqueName parameter is set to true. |
| pidOutputs.main | pipe | Triggers the next pipe
in the pipeline. For example:
|
ibm.RepoStorePipe.rsp.repo = string:SDK-repository0
ibm.RepoStorePipe.rsp.path = string:/RepoStoreTest/repoStoreTest1.txt
ibm.RepoStorePipe.rsp.data = string:please store this string in a file
ibm.RepoStorePipe.rsp.mimetype = string:text/plain
ibm.RepoStorePipe.rsp.metadata = key:metadata
ibm.RepoStorePipe.rsp.generateUniqueName = string:true
ibm.RepoStorePipe.rsp.actualPath = key:actualPath
ibm.RepoStorePipe.rsp.pidOutputs.main=pipe:ibm.ReturnDataPipe.rsp
ibm.ReturnDataPipe.rsp.content = jxpath:(concat("Your data was stored
at ", $data/actualPath))
ibm.ReturnDataPipe.rsp.mimetype = string:text/html
Retrieves objects preserved by other pipeline branches using ibm.PreserveMapPipe
For example, use ibm.RestoreMapPipe to retrieve data from the Action branch of the pipeline for use in the View branch.
| Expression | Type | Description |
|---|---|---|
| keys | string | Defines which preserved key-value pairs
should be retrieved from other pipeline branches. If you want to retrieve
multiple pairs, use a comma separated list. For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
The following example show how to configure a typical RestoreMapPipe. In this sample, the RestoreMapPipe specifies which preserved key-value pairs should be retrieved for use inside the pipeline's View branch. Once this is done, the next pipe is triggered.
ibm.RestoreMapPipe.MySolutionSaveForm.keys = string:locationdata
ibm.RestoreMapPipe.MySolutionSaveForm.pidOutputs.main = pipe:ibm.pdm6.ReturnPipe.
MySolutionSaveForm
Creates a View using given content and mimetype. This pipe also contains special handling of XFDL form content.
| Expression | Type | Description |
|---|---|---|
| content | key | Specifies the key used
to access the content. Valid values are:
For example:
|
| mimetype (optional) | string | Mime type of the returned
data. For example:
|
| filename (optional) | string | The name that is to be
given to the content when saving. Default: Untitled. If it is a form, the default would be Untitled.xfdl. |
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
| Expression | Type | Description |
|---|---|---|
| xfdlHandlingMode (optional) | string | Determines the method
for handling XFDL content. Valid values are:
Note: If you are using the standalone Java Access API, you cannot use ReturnDataPipe
when the xfdlHandlingMode parameter is set to autoDetect or html.
|
| jsEnableViewer (optional) | string | Causes the Viewer to
be returned embedded in a skeleton HTML page along with the necessary JavaScript API to register
it with the global form list. For example:
Note: If you want to use JavaScript with the Viewer you
will need to use frames. The Viewer is
expected to use one of the frames while the other frames use the JavaScript API.
|
| jsFormName (optional) | string | The name of the form used for accessing it in the JavaScript API. If no value is specified the name will be “Form1”. |
| Expression | Type | Description |
|---|---|---|
| translatorLocation (optional) | string | The location of the Webform
Server Translator
to be used for translating XFDL to HTML. For example: http://myServer:8085/translatorNote: If
you define a value for this parameter, it will override the global
ibm.WebformTranslatorHttp.default.translator Location parameter.
|
| cancelURL (optional) | string | The URL that defines the pipeline to run if the form is cancelled. |
| xformsReplace AllSubmitURL (optional) | string | The URL that defines the pipeline to run if an XForms replace all submission occurs. |
| Name | Get/Set/Both | Type | Details |
|---|---|---|---|
| templateId | set | resolvable to String | The id of the template that was previously loaded |
| instances (optional) | set | resolvable to List | Each element within this optional List should contain a map. Each map should contain two to four values. See the following list for details. |
See ibm.WebformTemplatePipe for details.
In the following example, a simple HTML page is returned:
ibm.ReturnDataPipe.mypipeline.content=string: <html><head><title>
Hello</title></head><body><h1>Hello World</h1></body</html>
ibm.ReturnDataPipe.mypipeline.mimetype=string:text/html
ibm.ReturnDataPipe.SamplePipeline.content = key:sampleForm
ibm.ReturnDataPipe.SamplePipeline.mimetype = string:application/vnd.xfdl
The following scenario will not work: Form A with URL http://server:port/wfsp/wfsp/samplePipe is rendered with Webform Server. Form A has a Cancel button or a button that performs an XForms replace all submission. When one of these buttons is clicked, form B is rendered in Webform Server. In the same browser session, if you load form A again with the same URL, form A will load but neither the Cancel button nor the XForms Replace All button will work.
Processes errors that occur in a pipe.
Depending on the errorFormat string, this pipe creates an XML or an HTML file (for viewing the errors).
| Expression | Type | Description |
|---|---|---|
| errorFormat (optional) | string | The format for the error
key. Values are:
For example:
html and xml do not include the stacktrace. Note: html_debug and xml_debug should
only be used in a development environment or for debugging a specific
problem.
|
| pidOutputs.main | pipe | The next pipe to execute. |
The following sample generates an HTML file to view the error:
# Error Pipeline
ibm.ReturnErrorPipe.simpletx.errorFormat = string:html
Detects what version of the Viewer is installed on the client's computer and stores this information into the data bucket.
| Expression | Type | Description |
|---|---|---|
| storeAs | key | The key to store the Viewer version in the data bucket. |
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
ibm.ViewerDetection.sample.storeAs = key:versionOfViewer
ibm.ViewerDetection.sample.pidOutputs.main = ibm.ReturnDataPipe.sample
Controls templates within a remote IBM Forms Server – Webform Server.
| Name | Get/Set/Both | Type | Details |
|---|---|---|---|
| translatorLocation | set | Resolvable to String | The Webform Server URL. |
| templateId | set | Resolvable to Map | The name to use when referencing a template. |
| command (optional) | set | Resolvable to Boolean | The command to execute.
Should be either add or check. Default: add |
| template (optional) | set | Resolvable to Map | When command equals add, this is the template that will be sent to the Webform Server. |
| output (optional) | get | Resolvable to String | When command equals check, this will return true if the templateId has been loaded as a template. Otherwise it returns false. |
| pidOutputs.main | get | Pipe | The next pipe to execute. |
Example URL: http://localhost:9080/turbo/open/addWebformTemplate?id=testTemplate1
ibm.HeadPipe.addWebformTemplate.connection =
string:/addWebformTemplate
ibm.HeadPipe.addWebformTemplate.pidOutputs.view
= pipe:ibm.RepoLoadPipe.addWebformTemplate
ibm.HeadPipe.addWebformTemplate.pidOutputs.error
= pipe:ibm.StoreContextDataPipe.defaultError
ibm.RepoLoadPipe.addWebformTemplate.repo=string:testFormsRepo
ibm.RepoLoadPipe.addWebformTemplate.path=string:XForms.
MortgagePreapproval_en.xfdl
ibm.RepoLoadPipe.addWebformTemplate.storeAs=key:form
ibm.RepoLoadPipe.addWebformTemplate.storeAsFormat = string:string
ibm.RepoLoadPipe.addWebformTemplate.pidOutputs.main=
pipe:ibm.WebformTemplatePipe.addWebformTemplate
ibm.WebformTemplatePipe.addWebformTemplate.translatorLocation
= string:http://hornby:8085/translator
ibm.WebformTemplatePipe.addWebformTemplate.template = key:form
ibm.WebformTemplatePipe.addWebformTemplate.templateId
= jxpath:$data/request/parameters/id
ibm.WebformTemplatePipe.addWebformTemplate.pidOutputs.main
=pipe:ibm.ReturnDataPipe.addWebformTemplate
ibm.ReturnDataPipe.addWebformTemplate.content =
string: added template
ibm.ReturnDataPipe.addWebformTemplate.mimetype =
string:text/plain
Example URL: http://localhost:9080/turbo/open/viewWebformTemplate?id=testTemplate1
ibm.HeadPipe.viewWebformTemplate.connection =
string:/viewWebformTemplate
ibm.HeadPipe.viewWebformTemplate.pidOutputs.view =
pipe:ibm.ReturnDataPipe.viewWebformTemplate
ibm.HeadPipe.viewWebformTemplate.pidOutputs.error =
pipe:ibm.StoreContextDataPipe.defaultError
ibm.ReturnDataPipe.viewWebformTemplate.templateId =
jxpath:$data/request/parameters/id
ibm.ReturnDataPipe.viewWebformTemplate.xfdlHandlingMode =
string:html
ibm.ReturnDataPipe.viewWebformTemplate.mimetype =
string:application/vnd.xfdl
Example URL: http://localhost:9080/turbo/open/viewWebformTemplateWithPrePop?id=testTemplate1
ibm.HeadPipe.viewWebformTemplatePrePop.connection =
string:/viewWebformTemplateWithPrePop
ibm.HeadPipe.viewWebformTemplatePrePop.pidOutputs.view =
pipe:ibm.RepoLoadPipe.viewWebformTemplatePrePop
ibm.HeadPipe.viewWebformTemplatePrePop.pidOutputs.error =
pipe:ibm.StoreContextDataPipe.defaultError
ibm.RepoLoadPipe.viewWebformTemplatePrePop.repo=string:testFormsRepo
ibm.RepoLoadPipe.viewWebformTemplatePrePop.path=string:XForms.
MortgagePreapprovalData.xml
ibm.RepoLoadPipe.viewWebformTemplatePrePop.storeAs=key:instance
ibm.RepoLoadPipe.viewWebformTemplatePrePop.storeAsFormat =
string:string
ibm.RepoLoadPipe.viewWebformTemplatePrePop.pidOutputs.main
=pipe:ibm.ReturnDataPipe.viewWebformTemplatePrePop
ibm.ReturnDataPipe.viewWebformTemplatePrePop.templateId =
jxpath:$data/request/parameters/id
ibm.ReturnDataPipe.viewWebformTemplatePrePop.instances.1.
instance = key:instance
ibm.ReturnDataPipe.viewWebformTemplatePrePop.instances.1.ref
= string:instance('Mortgage')
ibm.ReturnDataPipe.viewWebformTemplatePrePop.xfdlHandling
Mode = string:html
ibm.ReturnDataPipe.viewWebformTemplatePrePop.mimetype =
string:application/vnd.xfdl
Assigns a unique name to a form being rendered for a particular user, and retrieves it at run time.
| Expression | Type | Description |
|---|---|---|
| command | string, key, jxpath | Runs and determines what
operation the pipe will perform and how the other parameters are used.
Available commands are:
For example:
|
| throwOnError (Optional) | string, key, jxpath | Boolean value that must evaluate to true or
false. If true, the pipe will throw an exception if there is an error,
otherwise it will just return a status. Default is true. For example:
|
| identifier (Required for set, get, peek, close) | string, key, jxpath | The identifier of the running form to work on.
In the case of the set command you are setting the
identifier to be used to reference the form later. For all other commands
you will use this same identifier to act on the form. For example:
|
| form | key | In the case of a get/peek command,
this is where the binary data of the form is placed. For example:
|
| result | key | The result of the operation. Possible values
depend on the command:
For example:
|
| pidOutputs.main | pipe | Triggers the next pipe in the pipeline. |
Lets you add your own identifier to the form that was just rendered so it can be referred to later. For example:
# Setting an identifier for the form, in this case the name of
# the form
ibm.ReturnDataPipe.example.content=key:formdata
ibm.ReturnDataPipe.example.xfdlHandlingMode=string:html
ibm.ReturnDataPipe.example.mimeType=string:application/vnd.xfdl
ibm.ReturnDataPipe.example.pidOutputs.main=pipe:ibm.WFSRunning
FormPipe.example
ibm.WFSRunningFormPipe.example.command=string:set
ibm.WFSRunningFormPipe.example.identifier=key:formname
Attempts to retrieve the form previously identified from the Webform Server. This can be used to retrieve forms directly rather than waiting for a submission; this is useful if the user refreshes the browser manually, or navigates away from the form and then back again. For example:
ibm.WFSRunningFormPipe.example.command = string:get
ibm.WFSRunningFormPipe.example.identifier = jxpath:$data/
request/parameters/formname
ibm.WFSRunningFormPipe.example.throwOnError = string:false
ibm.WFSRunningFormPipe.example.result = key:result
ibm.WFSRunningFormPipe.example.form = key:form
Terminates the form previously identified by the key on the Webform Server translator server. For example:
ibm.WFSRunningFormPipe.example.command = string:close
ibm.WFSRunningFormPipe.example.identifier = jxpath:$data/request/
parameters/formname
ibm.WFSRunningFormPipe.example.throwOnError = string:false
ibm.WFSRunningFormPipe.example.result = key:result
Returns a list of all forms that have been assigned an identifier by the WFSRunningFormPipe for this user (per session). For example:
ibm.WFSRunningFormPipe.example.command = string:list
ibm.WFSRunningFormPipe.example.throwOnError = string:false
ibm.WFSRunningFormPipe.example.result = key:result
Each service used by the Forms Services Platform can be configured with a number of parameters. These parameters are described in the reference topic for each service.
Loads a form when you use LoadFormPipe and creates an object of type Form.
FormService theService = (FormService) this.getService(FormService.class.getName());
You
can then use FormService to create and load Forms.For more information about the Form Service, see the Forms Services Platform Javadocs.
Maps inputs to outputs.
Provides a method of connecting to a repository.
You can configure a Repository Service just like you would configure a Pipe. The ibm.FSRepository portion defines the repository type you are defining, the repo0 portion is a unique identifier that is used to differentiate repository instances. The final portion is the configuration parameter name.
| Expression | Description |
| name | Used to refer to the repository in the various pipes that use it. It is important to make sure this is unique. |
| description | A description of the repository. |
| root | The name of directory on the drive that is to be the root for the repository. The drive (for example in Windows D:\) that the File System Repository is on is always the same drive that the Forms Services Platform is running on. |
The following is an example repository:
ibm.FSRepository.repo0.name = SDK-repository0
ibm.FSRepository.repo0.description = SDK File System Repository
ibm.FSRepository.repo0.root = /fsp-SDKRepo
The IBM Forms Server – Forms Services Platform Repository REST API is a subset of the IBM Lotus Quickr REST API that lets you access a file system repository hosted by the Forms Services Platform using Quickr REST calls.
The IBM Forms Server – Forms Services Platform Repository REST API supports a subset of the Quickr REST API. This reference topic lists the supported subset of Atom type resources, URL patterns, request headers, and URL parameters.
| Atom Type | Resource | Atom Structure | Comments |
|---|---|---|---|
| Entry | Folder |
|
Edit link is not yet supported. |
| Document |
|
Edit link is not yet supported. | |
| Library |
|
Edit link is not yet supported. | |
| Feed | Folder |
|
|
| Library |
|
The following URL patterns can be used to construct URLs:
| URL Pattern | Method | Input Type | Operation |
|---|---|---|---|
| /library/[library id]/feed | GET | n/a | Returns an Atom Feed document on the specified library. |
| POST | Atom entry | Creates a folder or document at the root of the specified library. | |
| POST | Binary data | Creates a folder or document at the root of the specified library. | |
| /library/[library id]/folder/[folder id]/feed | GET | n/a | Returns an Atom Feed document on the specified folder containing documents and folders. |
| POST | Atom entry | Creates a new folder or document in the specified folder. | |
| POST | Binary data | Creates a new document in the specified folder. | |
| /library/[library id]/folder/[folder id]/entry | DELETE | n/a | Deletes the specified folder. |
| /library/[library id]/document/[document id]/media | GET | n/a | Returns the binary content of the document specified by the document id. |
| PUT | Atom Entry | Updates the binary content of a document. | |
| /library/[library id]/document/[document id]/entry | DELETE | n/a | Deletes the specified document. |
| Header | Description |
|---|---|
| Slug | Contains the path and title of the resource. Non-ASCII characters can appear in this header but they must be properly encoded according to the RFC 2047. |
| Content-Type | Used to specify the Mime type of the content being sent to the server. |
| Content-Language | Used to specify the language of the content being sent to the server. All contents are handled using UTF-8 encoding on the server. |
| Content-Length | Used to specify the content length when sending media content. This is required when sending media. |
| X-Method-Override | Used when tunneling PUT and DELETE requests over POST. |
| Parameter | Values | Description |
|---|---|---|
| page | Number | Specifies the page number to be retrieved. Used with library and folder feeds. |
| pagesize | Number | Specifies the number of items to include in a page. Used with library and folder feeds. |
| category |
Default: folder, document |
Indicates the type of children to include in the feed when requesting a feed folder or library. When multiple categories are specified, they should be separated by a comma (,). |
| filetype | Any file extension. For example: .txt, .xfdl, etc… | Used to filter response by the extension of the file. For example, if filetype is .txt, then only files with extension .txt will be returned. Use of this parameter is only valid when getting the feed of a folder or library. |
| includepath |
|
If true, a td:path element is included in the returned resources. |
이 정보는 미국에서 제공되는 제품 및 서비스용으로 작성된 것입니다.
IBM은 다른 국가에서 이 책에 기술된 제품, 서비스 또는 기능을 제공하지 않을 수도 있습니다. 현재 사용할 수 있는 제품 및 서비스에 대한 정보는 한국 IBM 담당자에게 문의하십시오. 이 책에서 IBM 제품, 프로그램 또는 서비스를 언급했다고 해서 해당 IBM 제품, 프로그램 또는 서비스만을 사용할 수 있다는 것을 의미하지는 않습니다. IBM의 지적 재산권을 침해하지 않는 한, 기능상으로 동등한 제품, 프로그램 또는 서비스를 대신 사용할 수도 있습니다. 그러나 비IBM 제품, 프로그램 또는 서비스의 운영에 대한 평가 및 검증은 사용자의 책임입니다.
IBM은 이 책에서 다루고 있는 특정 내용에 대해 특허를 보유하고 있거나 현재 특허 출원 중일 수 있습니다. 이 책을 제공한다고 해서 특허에 대한 라이센스까지 부여하는 것은 아닙니다. 라이센스에 대한 의문사항은 다음으로 문의하십시오.
135-700
서울특별시 강남구 도곡동 467-12, 군인공제회관빌딩
한국 아이.비.엠 주식회사
고객만족센터
전화번호: 080-023-8080
2바이트(DBCS) 정보에 관한 라이센스 문의는 한국 IBM 고객만족센터에 문의하거나 다음 주소로 서면 문의하시기 바랍니다.
Intellectual Property Licensing
Legal and Intellectual Property Law
IBM Japan Ltd.
1623-14, Shimotsuruma, Yamato-shi
Kanagawa 242-8502 Japan
다음 단락은 현지법과 상충하는 영국이나 기타 국가에서는 적용되지 않습니다. IBM은 타인의 권리 비침해, 상품성 및 특정 목적에의 적합성에 대한 묵시적 보증을 포함하여(단, 이에 한하지 않음) 묵시적이든 명시적이든 어떠한 종류의 보증 없이 이 책을 "현상태대로" 제공합니다. 일부 국가에서는 특정 거래에서 명시적 또는 묵시적 보증의 면책사항을 허용하지 않으므로, 이 사항이 적용되지 않을 수도 있습니다.
이 정보에는 기술적으로 부정확한 내용이나 인쇄상의 오류가 있을 수 있습니다. 이 정보는 주기적으로 변경되며, 변경된 사항은 최신판에 통합됩니다. IBM은 이 책에서 설명한 제품 및/또는 프로그램을 사전 통지 없이 언제든지 개선 및/또는 변경할 수 있습니다.
이 정보에서 언급되는 비IBM의 웹 사이트는 단지 편의상 제공된 것으로, 어떤 방식으로든 이들 웹 사이트를 옹호하고자 하는 것은 아닙니다. 해당 웹 사이트의 자료는 본 IBM 제품 자료의 일부가 아니므로 해당 웹 사이트 사용으로 인한 위험은 사용자 본인이 감수해야 합니다.
IBM은 귀하의 권리를 침해하지 않는 범위 내에서 적절하다고 생각하는 방식으로 귀하가 제공한 정보를 사용하거나 배포할 수 있습니다.
(i) 독립적으로 작성된 프로그램과 기타 프로그램(본 프로그램 포함) 간의 정보 교환 및 (ii) 교환된 정보의 상호 이용을 목적으로 본 프로그램에 관한 정보를 얻고자 하는 라이센스 사용자는 다음 주소로 문의하십시오.
135-700
서울특별시 강남구 도곡동 467-12, 군인공제회관빌딩
한국 아이.비.엠 주식회사
고객만족센터
이러한 정보는 해당 조건(예를 들면, 사용료 지불 등)하에서 사용될 수 있습니다.
이 정보에 기술된 라이센스가 부여된 프로그램 및 프로그램에 대해 사용 가능한 모든 라이센스가 부여된 자료는 IBM이 IBM 기본 계약, IBM 프로그램 라이센스 계약(IPLA) 또는 이와 동등한 계약에 따라 제공한 것입니다.
IBM, IBM 로고, ibm.com, Lotus 및 Notes는 미국 또는 기타 국가에서 사용되는 International Business Machines Corporation의 상표 또는 등록상표입니다. 이와 함께 기타 IBM 상표가 기재된 용어가 상표 기호(® 또는 ™)와 함께 이 정보에 처음 표시된 경우, 이와 같은 기호는 이 정보를 발행할 때 미국에서 IBM이 소유한 등록상표 또는 일반 법적 상표입니다. 또한 이러한 상표는 기타 국가에서 등록상표 또는 일반 법적 상표입니다. 현재 IBM 상표 목록은 웹(http://www.ibm.com/legal/copytrade.shtml)에 있습니다.
Java 및 모든 Java 기반 상표와 로고는 Oracle 및/또는 그 계열사의 상표 또는 등록상표입니다.
Linux는 미국 또는 기타 국가에서 사용되는 Linus Torvalds의 등록상표입니다.
Microsoft 및 Windows는 미국 또는 기타 국가에서 사용되는 Microsoft Corporation의 상표입니다.
UNIX는 미국 또는 기타 국가에서 사용되는 The Open Group의 등록상표입니다.
기타 회사, 제품 및 서비스 이름은 타사의 상표 또는 서비스표입니다.
