Bài đăng

How to process xml response when integration rest api in IBM BPM Automation Workflow

Hình ảnh
How to process xml response when integration rest api in IBM BPM Automation Workflow 1. Common functions for process xml response function getErrorMessageInSystem(o) { if (o && isNOTNullEmpty()) { var value = o.error.xpath(o.path); if (isNOTNullEmpty(value) && isNOTNullEmpty(value.item(0))) { return value.item(0).getText(); } } return null; }; function getRESTInfo(o) { var info = {}; if (o && isNOTNullEmpty(o.error)) { var pathRest = isNOTNullEmpty(o.path) ? o.path : '/error'; try { var restResponse = o.error.xpath(pathRest + "/HTTPStatusCode"); if (isNOTNullEmptyCustom(restResponse)) { info.errorCode = getErrorMessageInSystem({ error : o.error, path : pathRest + "/HTTPStatusCode" }); info.errorMessage = getErrorMessageInSystem({ error : o.error, path : pathRest + "/HTTPStatusMessage" }); info.errorContent = getErrorMessageInSystem(...

IBM BPM - Integration Rest Api from Swagger file

Hình ảnh
I. Giới thiệu IBM BPM có cơ chế tích hợp Rest api thông qua file swagger (chuẩn đặc tả OpenAPI 2.0). Bài này sẽ hướng dẫn cách tích hợp api vào BPM. OpenAPI: https://www.openapis.org/ Swagger: https://swagger.io/specification/ Swagger Editor Online: https://editor.swagger.io/ II. Hướng dẫn 1. Chuẩn bị file swagger (.json/.yml) theo chuẩn OpenAPI 2.0 Chú ý: Tên file swagger nên ghi chú rõ ràng ở tab Overview của App/Toolkit vì sau nếu muốn update thêm file swagger thì cần import đúng tên cũ để tránh việc binding lại các service flow đã làm trước đó 2. Vào BPM > App/Toolkit > Services > External Service 3. New External Service > Chọn Java, REST or Web service > Next 4. Chọn REST service from local file Ở đây có nhiều hình thức import Rest api để tích hợp, trong bài này chỉ hướng dẫn cách tích hợp từ file local External service name: Nhập tên của external se...

IBM BPM - Error: Save error

IBM BPM - Error: ArtifactSaveC E com.ibm.bpmsdk.model.autosave.persistence.ArtifactSaveCommand readAndApplyChanges ArtifactSaveC E com.ibm.bpmsdk.model.autosave.persistence.ArtifactSaveCommand readAndApplyChanges com.lombardisoftware.client.delegate.BusinessDelegateException: java.lang.NullPointerException com.ibm.bpmsdk.model.exception.ToolsModelException: com.lombardisoftware.client.delegate.BusinessDelegateException: java.lang.NullPointerException at com.ibm.bpmsdk.model.exception.ToolsModelException.asToolsModelException(ToolsModelException.java:47) at com.ibm.bpmsdk.tools.repo.client.RepositoryAccessHelper.findPOByPrimaryKey(RepositoryAccessHelper.java:1265) at com.ibm.bpmsdk.tools.repo.client.RepositoryAccessHelper.findByPrimaryKey(RepositoryAccessHelper.java:1096) at com.ibm.bpmsdk.tools.repo.client.RepositoryAccessHelper.findArtifactByPrimaryKeyForEdit(RepositoryAccessHelpe...

IBM ECM Filenet - Error: Writer already obtained

Hình ảnh
IBM ECM Filenet - Error: org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging Interceptor for {http://jaxrs.ecm.ibm.com/}Actions has thrown exception, unwinding now java.lang.IllegalStateException: SRVE0209E: Writer already obtained org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging Interceptor for {http://jaxrs.ecm.ibm.com/}Actions has thrown exception, unwinding now java.lang.IllegalStateException: SRVE0209E: Writer already obtained at com.ibm.ws.webcontainer.srt.SRTServletResponse.getOutputStream(SRTServletResponse.java:819) at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:142) at com.ibm.owasp.esapi.waf.internal.InterceptingHTTPServletResponse.getOutputStream(InterceptingHTTPServletResponse.java:71) at org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(AbstractHTTPDestination.java:645) at org.apache.cxf.transport.http....

IBM BPM - Error: No messaging engine was found that matched the following parameters: bus

IBM BPM - Error: No messaging engine was found that matched the following parameters: bus The exception stack trace follows: com.ibm.ws.Transaction.XAResourceNotAvailableException: com.ibm.websphere.sib.exception.SIResourceException: CWSIT0088E: There are currently no messaging engines in bus BPM.De1.Bus running. Additional failure information: CWSIT0103E: No messaging engine was found that matched the following parameters: bus=BPM.De1.Bus, targetGroup=663C33C409C1046C, targetType=MEUuid, targetSignificance=Required, transportChain=InboundSecureMessaging, proximity=Bus Fix 1. Stop BPM Server (App, Sup, Mes) 2. Drop SIB Table in CMNDB (DB of BPM Platform) drop table SIB000; drop table SIB001; drop table SIB002; drop table SIBCLASSMAP; drop table SIBKEYS; drop table SIBLISTING; drop table SIBOW...

Java Spring Boot - Error: Embedded Tomcat

Hình ảnh
Java Spring Boot Standalone Error: org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:192). The following method did not exist An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:192) The following method did not exist: org.apache.tomcat.util.modeler.Registry.disableRegistry() The calling method's class, org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory, was loaded from the following location: jar:file:/path-m2-repo/org/springframework/boot/spring-boot/2.7.1/spring-boot-2.7.1.jar!/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.class The called method's ...

Java Spring - Error: ContextPath must start with '/' and not end with '/'

Java Spring Error: ContextPath must start with '/' and not end with '/' Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tomcatServletWebServerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedTomcat.class]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: ContextPath must start with '/' and not end with '/' Config context path hiện tại Kiểm tra lại config contextPath của application server: servlet: contextPath: context-path-name ...

BPM WebSphere - Create Datasource (Connect to DB via JDBC)

Hình ảnh
I. Giới thiệu WebSphere là một application server mạnh mẽ của IBM cung cấp cho chúng ta nhiều chức năng có thể config trên giao diện người dùng (UI). Trong bài này sẽ hướng dẫn cách config đến một database thông qua jdbc url. II. Hướng dẫn Truy cập giao diện console WebSphere, từ menu trái truy cập theo thứ tự sau: 1. Thêm authentication 1.1 Security -> Global security 1.2 Java Authentication and Authorization Service -> J2C authentication data 1.3 Click chọn New để tạo thông tin authen đến DB 2. Config Datasource 2.1 Resources -> JDBC -> Data sources 2.2 Click chọn New và nhập các thông tin Data source name : Tên data source JNDI name : Tên jndi (tên này sẽ sử dụng để truyền input vào service SQL trong toolkit System Data) Chọn Next 2.3 Chọn JDBC provider tương ứng với DB cần connect (tạo mới hoặc chọn những provider sẵn có) ...

Spring boot - Failed to start bean documentationPluginsBootstrapper

Lỗi gặp phải [restartedMain,,] ERROR org.springframework.boot.SpringApplication:824 - Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) at java.lang.Iterable.forEach(Iterable.java:75) at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) at org.springframework.contex...

BPM - Error when Save on Process Center

Lỗi gặp phải 000000b2 RepositoryAcc W com.ibm.bpm.tools.repo.client.transform.BPDTransformer.transformToDomainObject() com.ibm.bpmsdk.model.exception.ToolsModelException: java.util.ConcurrentModificationException at com.ibm.bpmsdk.model.exception.ToolsModelException.asToolsModelException(ToolsModelException.java:47) at com.ibm.bpm.tools.repo.client.transform.BPDTransformer.loadBpmnDefinitions(BPDTransformer.java:832) at com.ibm.bpm.tools.repo.client.transform.BPDTransformer.transformToDomainObject(BPDTransformer.java:253) at com.ibm.bpm.tools.repo.client.transform.BPDTransformer.transformToDomainObject(BPDTransformer.java:242) at com.ibm.bpm.tools.repo.client.transform.BPDTransformer.transformToDomainObject(BPDTransformer.java:920) at com.ibm.bpm.tools.repo.client.transform.BPDTransformer.transformToDomainObject(BPDTransformer.java:161) at com.ibm.bpmsdk.tools.repo.client...

BPM - Event Manager (UCA) Error

Lỗi gặp phải EJBWorkflowMa E com.lombardisoftware.server.ejb.workflow.EJBWorkflowManagerBean doResumeWorkflowEngine CWLLG1338E: An error occurred while running a service. ExecutionContext: ExecutionStack(), SymbolTable(SymbolTable(...)), sharedData = EndState(id = guid:4c1ef5a52747465b:2de8c8dd:1804f50074e:-53b4, displayName = null), startingProcessRef = Ref[/TWProcess.4fc1d8b8-b825-4502-a9e4-06483efb4d06], rootVersioningContext = Snapshot.239ba0e1-e885-400a-b647-4455e8645cea, currentProcessRefFromRoot = Ref[/TWProcess.4fc1d8b8-b825-4502-a9e4-06483efb4d06] EventMgrDeleg E CWLLG2229E: An exception occurred in an EJB call. Error: DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011, SQLERRMC=null, DRIVER=4.26.14 com.lombardisoftware.core.TeamWorksException: DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011, SQLERRMC=null, DRIVER=4.26.14 at com.lombardisoftware.server.eventmgr.UnderCoverAgentExecutor....

Websphere - Authentication failed when using LTPA. The exception is com.ibm.websphere.wim.exception.WIMException - GetSubject for userName={username} failed in ServiceLocator. Error: com.ibm.websphere.security.auth.WSLoginFailedException

Hình ảnh
Lỗi gặp phải LTPAServerObj E SECJ0369E: Authentication failed when using LTPA. The exception is com.ibm.websphere.wim.exception.WIMException. ServiceLocato E CWLLG2003E: GetSubject for userName=wasadmin failed in ServiceLocator. Error: com.ibm.websphere.security.auth.WSLoginFailedException. com.ibm.websphere.wim.exception.WIMException com.ibm.ws.wim.adapter.ldap.LdapConnection DirContext reCreateDirContext(String errorMessage) CWWIM4520E The 'javax.naming.CommunicationException: {ip}:{port} [Root exception is java.net.SocketTimeoutException: connect timed out]' naming exception occurred during processing. com.ibm.ws.wim.adapter.ldap.LdapConnection DirContext reCreateDirContext(String errorMessage) Giải pháp: Gặp tình huống này cần kiểm tra lại config Security trên Websphere Admin Global Security Federated repositories (Trong trường hợp cụ ...

Builder Pattern trong Java/Javascript

I. Giới thiệu Trong nhiều ngôn ngữ lâp trình thì Constructor giúp chúng ta truyền tham số để tạo 1 object mới. Nhưng vấn đề xảy ra là: - Nếu object thay đổi liên tục (thêm hoặc xóa bớt thuộc tính) thì constructor ta cũng phải đổi lại - object cần nhiều constructor có tham số đầu vào khác nhau Việc này dẫn đến code của chúng ta dễ phải thay đổi liên tục. Để khắc phục nhược điểm này Builder Pattern ra đời Với Builder Pattern thì việc tạo 1 instance object trở nên dễ dàng hơn, ngắn gọn hơn và tùy biến được nhiều hơn 1. Java Ví dụ ta có 1 class Employee như sau: package com.entity; public class Employee { private Long id; private String name; private Long departmentId; // Generate getter and setter } Ví dụ ta muốn tạo 2 Employee: - id = 1, name = Nguyễn Văn A - id = 2, name = Nguyễn Văn B, departmentId = 10 Cách 1: Dùng setter ...

ObjectMapper và HibernateModule

Hình ảnh
I. Giới thiệu Object Mapper là class nằm trong bộ thư viện jackson giúp ta có thể chuyển đổi data trong khi lập trình, copy data từ object này sang object kia một cách dễ dàng mà không phải viết từng dòng set get. Ta có bài toán sau: Giờ ta cần chuyển đổi object Employee (entity) sang EmployeeDto (dto) với đầy đủ các thuộc tính trong entity đang có 1. Entity 1.1. Department package com.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @Getter @Setter @Entity @Builder @NoArgsConstructor @AllArgsConstructor @Table(name = "DEPARTMENT") public class Department { @Id @Column(name = "ID") ...

Java Spring JPA Specification

Hình ảnh
I. Giới thiệu Spring JPA Specification chứa một bộ api cho phép ta search, filter trong entity một cách dễ dàng. Trong bài này ta có mối quan hệ giữa Employee và Department như sau Giờ chúng ta sẽ dùng Specification để lấy ra danh sách Employee theo tên phòng ban mà ta muốn tìm II. Sử dụng 1. pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.specification</groupId> <artifactId>specification-test</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties>...