Tích hợp FileNet với IBM Content Manager, Phần 3: Triển khai thực hiện các trình diễn công việc dựa vào Component Integrator

Một ví dụ sử dụng kịch bản "Công ty ABC"

Đây là bài thứ ba trong một loạt bốn bài mô tả cách tích hợp FileNet® Business Process Manager (FileNet BPM - Quản lý quy trình nghiệp vụ FileNet) với IBM Content Manger (IBM ECM - Nhà quản lý nội dung của IBM). Bạn sẽ thấy, từng bước một, cách triển khai thực hiện các trình diễn công việc dựa vào Component Integrator (Nhà tích hợp thành phần). Ngoài ra, tìm hiểu cách đăng ký đối tượng các thực thể nghiệp vụ Java™ đã tạo ra vào FileNet P8 Component Integrator (Nhà tích hợp thành phần P8 của FileNet) để tạo ra một hàng đợi thành phần và làm cho hàng đợi thành phần này có sẵn cho các quy trình nghiệp vụ. Bài viết này tiếp tục với kịch bản "công ty ABC" được mô tả trong Các phần 1 và 2.

Jing Guo Yao, Kỹ sư pần mềm, IBM

Jing Guo Yao là một kỹ sư phần mềm cao cấp tại Phòng thí nghiệm phát triển phần mềm Trung Quốc của IBM (CSDL). Anh làm về phát triển IBM Content Management.



Dipayan Gangopadhyay, Cố vấn cao cấp, IBM Research, IBM Japan

GangopadhyayDipayan Gangopadhyay là cố vấn cao cấp về chiến lược kỹ thuật giải pháp. Anh làm việc trong Viện Nghiên cứu Almaden của IBM.



James Lin, Kỹ sư trưởng, IBM

James LInJames Lin là kiến trúc sư trưởng cho phát triển IBM Content Management.



19 08 2011

Giới thiệu về FileNet P8 Component Integrator

FileNet P8 Component Integrator giúp cho có khả năng tương tác với một thực thể bên ngoài được gọi là một thành phần có thể hoặc là một đối tượng Java hoặc Java Messaging System (JMS - Hệ thống thông điệp Java). Bạn có thể sử dụng nó để nhập khẩu các lớp Java và quản lý giao tiếp giữa máy quy trình và các giao diện. Component Integrator bao gồm các bộ điều hợp là các giao diện để giao tiếp các sự kiện từ máy quy trình đến các thực thể bên ngoài như là các đối tượng Java. Các bộ điều hợp tương tác với các kiểu các thành phần khác nhau từ một bước của dòng công việc.

Hình 1 cho thấy các bước mà bạn cần thực hiện để tạo một hàng đợi thành phần Java trong Component Integrator.

Hình 1. Các bước để tạo ra một trình diễn công việc thành phần Java trong Component Integrator
Các bước để tạo ra một trình diễn công việc thành phần Java trong Component Integrator

Như được thể hiện trong biểu đồ trên, bước đầu tiên là cấu hình và triển khai thành phần (1). Bạn có thể sử dụng Bàn điều khiển cấu hình quy trình P8 của FileNet (FileNet P8 Process Configuration Console) để tạo ra một hàng đợi thành phần (2 và 3).

Tiếp theo, triển khai các tệp jar cần thiết cho thành phần trên máy chủ Máy Ứng dụng và đăng ký thành phần trong Process Task Manager (Nhà quản lý nhiệm vụ quy trình) (4 và 5). Process Designer (Nhà thiết kế quy trình) lấy thông tin cấu hình từ Máy Quy trình (Process Engine) (6).

Sau đó tạo các định nghĩa dòng công việc. Bạn có thể tạo ra một bước thành phần và chọn thành phần và phương thức đã đăng ký để gọi. Bạn cũng cần phải xác định các trường dòng công việc sẽ được chuyển qua làm các tham số cho phương thức trong thời gian chạy (7). Các định nghĩa dòng công việc (các yêu cầu cho công việc) sau đó được chuyển tới các hàng đợi của Máy Quy trình (8).

Hình 2 mô tả sự tương tác trong thời gian chạy giữa Component Integrator và các dịch vụ của Máy Ứng dụng như là nhà quản lý thành phần, các hàng đợi của máy quy trình và một thực thể tùy chỉnh được hiển thị trong cùng hình đó. Khi quy trình dòng công việc được thực hiện, Component Manager lấy yêu cầu từ các hàng đợi thành phần và gọi các thành phần thông qua các bộ điều hợp. Với mỗi bước trong dòng công việc, chuỗi các sự kiện chung sau đây sẽ diễn ra. Đầu tiên, thông tin được gửi đến thành phần qua bộ điều hợp. Sau đó, thành phần thực hiện công việc của mình và tương tác với thực thể tùy chỉnh. Cuối cùng, kết quả công việc được lưu trong bước này.

Hình 2. Sự tương tác trong thời gian chạy của Component Integrator
Sự tương tác trong thời gian chạy của Component Integrator

Chúng ta sẽ giới thiệu cách Component Integrator làm việc trước khi chúng ta triển khai thực hiện trình diễn công việc của Component Integrator.

Chúng ta định nghĩa một hoạt động quy trình liên kết các giá trị tham số với một phương thức thành phần. Khi sử dụng các hoạt động quy trình, chúng ta có thể chuyển các giá trị của các trường mục công việc đến một phương thức thành phần. Khi một dòng công việc đang chạy có một mục công việc đạt đến một bước thành phần (một thành phần đã được tạo ra như là một bước trong một dòng công việc), Component Integrator tự động thực hiện một loạt các hoạt động. Phương thức này tự động đọc các giá trị của trường mục công việc, chờ một đáp ứng từ phương thức thành phần, cập nhật các giá trị của trường mục công việc theo bất kỳ các thay đổi nhận được từ việc thực hiện phương thức thành phần này, lưu mục công việc và mở khóa nó. Cuối cùng, phương thức hoàn thành bước này bằng cách gửi mục công việc tới một bước tiếp theo.


Triển khai thực hiện Component Integrator dựa trên trình diễn công việc

Bây giờ bạn cần có một sự hiểu biết cơ bản về cách triển khai thực hiện một trình diễn công việc dựa vào Component Integrator. Đây là lúc xem xét năm bước chính sau đây để hoàn thành việc triển khai thực hiện này.

  1. Triển khai một lớp Java tùy chỉnh.
  2. Sử dụng Process Configuration Console (Bàn điều khiển cấu hình quy trình) để tạo ra một hàng đợi thành phần và định nghĩa các hoạt động của hàng đợi thành phần.
  3. Sử dụng Process Task Manager (Nhà quản lý nhiệm vụ quy trình) để bắt đầu và kết thúc Component Manager (Nhà quản lý thành phần) và bắt đầu và ngừng các thành phần.
  4. Sử dụng Nhà thiết kế quy trình (Process Designer) để tạo ra một quy trình nghiệp vụ và thêm hàng đợi thành phần Java đã đăng ký vào quy trình.
  5. Sử dụng Vùng làm việc FileNet để xác nhận hợp lệ quy trình nghiệp vụ.

Trong phần 2, bạn đã tạo ra Các thực thể nghiệp vụ Java (Java Business Entities) cho kho lưu trữ IBM Content Manager cũng như lớp cổng cho các phương thức hoạt động của Các thực thể nghiệp vụ Java. Bây giờ bạn sẽ đăng ký lớp cổng vào Component Integrator để tạo ra một hàng đợi thành phần. Sau đó, bạn có thể sử dụng tất cả các phương thức hoạt động trong định nghĩa quy trình. Sau đó, quy trình nghiệp vụ có thể tự do tương tác với kho lưu trữ IBM Content Manager qua hàng đợi thành phần này. Các phần sau mô tả cách làm điều đó.


Triển khai một lớp Java tùy chỉnh

Có ba phần cho lớp Java tùy chỉnh.

  • Các thực thể nghiệp vụ Java.
  • Lớp cổng (gateway).
  • Tệp cấu hình và lớp Dịch vụ ủy quyền và xác thực thực Java (JAAS-Java Authentication and Authorization Service).

Các thực thể nghiệp vụ Java và lớp cổng đã được triển khai thực hiện trong Phần 2. Ở đây bạn chỉ cần tạo tệp cấu hình và lớp JAAS. Tại sao bạn cần tệp cấu hình và các lớp JAAS? Lý do là FileNet P8 Component Integrator sử dụng JAAS để thực hiện xác thực. Bạn nên tạo ra mô đun xác thực JAAS và tệp cấu hình đăng nhập cho lớp các thực thể nghiệp vụ Java. Để cấu hình JAAS, bạn cần hoàn thành 5 bước sau đây:

1. Đầu tiên, tạo một lớp LoginModule cho hệ thống mà lớp tuỳ chỉnh truy cập vào. Bạn có thể làm theo Hướng dẫn của Nhà phát triển mô đun đăng nhậpHướng dẫn xác thực JAAS để tạo ra các lớp LoginModule. SampleLoginModule.java triển khai thực hiện việc xác thực bên dưới mong muốn. Xác thực người dùng của SampleLoginModule chỉ đơn giản kiểm tra xem tên và mật khẩu mà người sử dụng nhập vào đã có giá trị cụ thể chưa. Mã nguồn của SampleLoginModule được hiển thị dưới đây.

Liên kết 1. Mã loginModule mẫu - SampleLoginModule.java
public class SampleLoginModule implements LoginModule
{
    private Subject         m_subject;
    private CallbackHandler m_callbackHandler;
    private Map             m_sharedState;
    private Map             m_options;

    private String          m_username  = null;
    private boolean 	    m_validSession = true;

    // testUser's SamplePrincipal
    private SamplePrincipal m_principal;

    public void initialize(Subject subject, 
    CallbackHandler callbackHandler, Map sharedState, Map options)
    {
        this.m_subject          = subject;
        this.m_callbackHandler  = callbackHandler;;
        this.m_options          = options;
        this.m_sharedState 	    = sharedState;
    }

    public boolean login() throws LoginException
    {
        if (m_callbackHandler == null)
        {
            throw new LoginException("Error:
             no CallbackHandler available to get authentication information");
        }

	String password = null;

	m_username = (String)m_sharedState.get("javax.security.auth.login.name");
	password   = (String)m_sharedState.get("javax.security.auth.login.password");

        if (m_username == null)
        {
                Callback[] callbacks = null;

                callbacks = new Callback[3];
                callbacks[0] = new TextOutputCallback(TextOutputCallback.INFORMATION,
                 "Sample Authentication");
                callbacks[1] = new NameCallback("user name:");
                callbacks[2] = new PasswordCallback("password:", false);

                try
                {
                    m_callbackHandler.handle(callbacks);
                    m_username = ((NameCallback)callbacks[1]).getName();

                    char[] tmpPassword = ((PasswordCallback)callbacks[2]).getPassword();

                    if (tmpPassword != null)
                        password = new String(tmpPassword);
                    else
                        password = null;

                    ((PasswordCallback)callbacks[2]).clearPassword();

                    m_sharedState.put("javax.security.auth.login.name",m_username);
                    m_sharedState.put("javax.security.auth.login.password", password);

                }
                catch (java.io.IOException ioe)
                {
                    throw new LoginException(ioe.toString());
                }
                catch (UnsupportedCallbackException uce)
                {
                    throw new LoginException("Error: 
                    no CallbackHandler available to get authentication information");
                }
        }

        try
        {
        }
        catch (Exception e)
        {;
            throw new LoginException(e.toString());
        }

	  m_validSession = true;
        return (m_validSession);
    }
	
	...
}

SamplePrincipal.java là một lớp mẫu triển khai thực hiện giao diện java.security.Principal. Nó thường do SampleLoginModule sử dụng.

Liên kết 2. Mã mẫu chính - SamplePrincipal.java
public class SamplePrincipal implements Principal, java.io.Serializable
{


    private String name;

    public SamplePrincipal( String name )
    {
        if( name == null )
            throw new NullPointerException( "illegal null input" );

        this.name = name;
    }

    public String getName()
    {
        return name;
    }

    public String toString()
    {
        return ("SamplePrincipal:  " + name);
    }

    public boolean equals( Object o )
    {
        if( o == null )
            return false;

        if( this == o )
            return true;

        if( !(o instanceof SamplePrincipal) )
            return false;
        SamplePrincipal that = (SamplePrincipal) o;

        if( this.getName().equals( that.getName() ) )
            return true;
        return false;
    }

    public int hashCode()
    {
        return name.hashCode();
    }
    
    ...
}

2. Thứ hai, tạo ra một tệp jar để sắp xếp lớp Java tùy chỉnh và các lớp LoginModule tương ứng. Bạn cần phải gói các lớp LoginModule của JAAS và lớp cổng vào trong tệp jar này. Để cho thuận tiện, bạn cũng có thể tải tệp jar có tên ICMOperations.jar từ phần Tải về.

3. Sau đó, tạo ra một tệp Cấu hình đăng nhập JAAS chứa một phần LoginContext. Các mã sau đây cho thấy tệp cấu hình đăng nhập này. Bạn có thể thêm văn bản vào tệp cấu hình JAAS mặc định của bộ định tuyến (Router) FileNet taskman.login.config . Tệp này nằm trong thư mục filenet_installation_directory/AE/Router. Bạn có thể nhận được tệp taskman.login.config trong phần Tải về.

Liên kết 3. Cấu hình JAAS
Sample
{
    filenet.vw.server.VWLoginModule required;	
    com.ibm.cm.businesslogic.operations.jaas.SampleLoginModule required debug=true;
};

4. Tiếp theo, triển khai tệp Cấu hình đăng nhập JAAS, tệp JAR tùy chỉnh và các tệp JAR cần thiết bằng cách sao chép các tệp này vào vị trí triển khai trên máy chủ Máy Ứng dụng. Trên thực tế, bạn cũng có thể sao chép các tệp này vào bất kỳ vị trí nào bạn muốn. Nói chung, nó sẽ là thư mục filenet_installation_directory/AE/Workplace/WEB-INF/lib.

5. Cuối cùng, kết thúc Component Manager và chỉ rõ tệp JAR tùy chỉnh mà bạn đã tạo ra như là một trong các thư viện Java cần thiết trong Component Manager. Trong Hình 3, chúng ta thêm tệp JAR ICMOperation.jar và cũng như các tệp JAR có liên quan. Bạn có thể tải các tệp JAR relatedJARFiles.zip trong phần Tải về.

Hình 3. Thêm tệp JAR và các tệp JAR có liên quan vào Component Manager
Thêm tệp JAR và các tệp JAR có liên quan vào Component Manager

Lưu ý: Nếu lớp Java đã bao gồm các mô đun phụ thuộc không nằm trong tệp JAR cũng như không nằm trong các thư viện cần thiết hiện có, thì cần chỉ rõ các tệp jar chứa các mô dun phụ thuộc làm các thư viện cần thiết. Do các thực thể nghiệp vụ Java đang sử dụng OOAPI của Content Manager để giao tiếp với kho lưu trữ của Content Manager, bạn nên lập danh mục cơ sở dữ liệu trước khi thực hiện chúng. Hãy tham khảo hướng dẫn này để thực hiện danh mục đó


Tạo một hàng đợi thành phần và định nghĩa các hoạt động hàng đợi thành phần

Bạn sử dụng Bàn điều khiển cấu hình nghiệp vụ để tạo và cấu hình một hàng đợi thành phần cho lớp Java hoặc hàng đợi JMS tùy chỉnh đã triển khai. Chỉ có một lớp hoặc hàng đợi JMS mới có thể được kết hợp với một hàng đợi thành phần của Máy Quy trình duy nhất. Tuy nhiên, bạn có thể cấu hình nhiều hàng đợi thành phần cho bất kỳ lớp hoặc hàng đợi JMS cụ thể nào bằng cách gán các tên khác nhau cho các hàng đợi thành phần bổ sung. Để có các hướng dẫn, xem Cấu hình các hàng đợi phần hàng (Configuring Component Queues).

Trong hệ thống Yêu cầu bồi thường bảo hiểm tự động của Công ty ABC, bạn có thể chỉ đăng ký một thành phần Java, thật dễ dàng để thiết kế quy trình nghiệp vụ bằng cách sử dụng Nhà thiết kế quy trình (Process Designer). Bây giờ bạn sẽ đăng ký một hàng đợi thành phần mới theo từng bước một.

Trước tiên, khởi chạy Bàn điều khiển cấu hình quy trình của Bàn làm việc FileNet và đăng ký các lớp bổ sung cho thành phần Java này. Hình 4 cho thấy bước này. Nếu tệp JAR của thành phần Java có một số tệp jar hoặc các tệp lớp Java có liên quan, bạn nên đăng ký chúng trước khi tạo ra các hàng đợi thành phần Java mới .

Hình 4. Thêm tệp JAR và các tệp JAR có liên quan vào Component Manager
Thêm tệp JAR và các tệp JAR có liên quan vào Component Manager

Sau khi đăng ký một số tệp jar bổ sung, bạn tạo một hàng đợi thành phần Java mới. Bạn có thể chỉ định bất kỳ tên nào muốn. Hình 5 cho thấy bước này.

Hình 5. Tạo một hàng đợi thành phần Java mới
Tạo một hàng đợi thành phần Java mới

Bây giờ, chọn bộ điều hợp Java cho hàng đợi thành phần Java. Bạn có thể chọn tệp jar trong đó có lớp Java tùy chỉnh và lớp cấu hình JAAS. Trong trường hợp của chúng ta, đó là tệp ICMOperation.jar. Bạn cũng nên chọn lớp Java tùy chỉnh trưng ra tất cả các phương thức hoạt động. Trong trường hợp tương tự, đó là tệp ICMOperation.class. Hình 6 cho thấy bước này.

Hình 6. Cấu hình các tệp bộ điều hợp Java
Cấu hình các tệp bộ điều hợp Java

Trong bước này, thiết lập các đặc tính bộ điều hợp Java và ủy quyền JAAS như tên người dùng, mật khẩu và ngữ cảnh cấu hình. Trong trường hợp này, nhập vào cấu hình sau như Hình 7 cho thấy.

Hình 7. Cấu hình các đặc tính bộ điều hợp Java và và ủy quyền JAAS
Cấu hình các đặc tính bộ điều hợp Java và và ủy quyền JAAS

Trong Hình 8, thiết lập các phương thức hoạt động mà bạn muốn trưng ra. Chỉ các phương thức chung mới có thể được trưng ra.

Hình 8. Cấu hình các hoạt động.
Configure the operations

Cuối cùng, lưu hàng đợi thành phần đã tạo ra. Hình 9 cho thấy bước này.

Hình 9. Lưu hàng đợi thành phần đã tạo ra
Lưu hàng đợi thành phần đã tạo ra

Bây giờ bạn đã tạo ra một hàng đợi thành phần có thể trưng ra tất cả các phương thức/hàm của các thực thể nghiệp vụ Java.


Làm mới tất cả các cấu hình

Sau khi bạn đã tạo ra hàng đợi thành phần mới, hãy làm mới tất cả các cấu hình bằng Process Task Manager (Nhà quản lý nhiệm vụ quy trình) để làm cho hàng đợi thành phần đã tạo có sẵn trong Component Manager. Hình 10 cho thấy bước này.

Hình 10. Làm mới tất cả các cấu hình
Làm mới tất cả các cấu hình

Bây giờ bạn có thể nhìn thấy hàng đợi thành phần đã tạo ra có sẵn trong nhà quản lý thành phần, như Hình 11 cho thấy.

Hình 11. Hàng đợi thành phần mới có sẵn trong Component Manager
Hàng đợi thành phần mới có sẵn trong Component Manager

Sau tất cả các cấu hình này, bạn có thể trực tiếp sử dụng hàng đợi thành phần mới này trong quy trình nghiệp vụ. Bạn có thể thấy các phương thức hàng đợi thành phần có sẵn trong Nhà thiết kế quy trình (Process Designer). Hình 12 cho thấy các phương thức hàng đợi thành phần.

Hình 12. Hàng đợi thành phần đã tạo ra ICMOperations có sẵn trong Nhà thiết kế quy trình
Chúng ta có thể thấy hàng đợi thành phần đã tạo ra của mình ICMOperations trong nhà thiết kế quy trình

Kết luận

Trong phần 3, bạn đã đăng ký các đối tượng thực thể nghiệp vụ Java của hệ thống Yêu cầu bồi thường bảo hiểm tự động của công ty ABC đã tạo ra của bạn vào FileNet P8 Component Integrator, đã sử dụng Process Task Manager để xử lý hàng đợi thành phần mới và đã làm cho hàng đợi thành phần này có sẵn cho quy trình nghiệp vụ.

Phần 4 sẽ mô tả cách sử dụng FileNet Business Process Designer (Nhà thiết kế quy trình nghiệp vụ FileNet) để triển khai thực hiện một định nghĩa dòng công việc để sử dụng hàng đợi thành phần vừa mới được tạo và cách thực hiện quy trình nghiệp vụ này.


Các tải về

Mô tảTênKích thước
JAAS configuration filetaskman.login.config1KB
JAAS Configuraion and Gateway class jarICMOperations.jar9KB
Related jar filesrelatedJARFiles.zip10.0MB
Install and Configure CM runtime clientconfigure.txt1KB

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Tải về trình diễn FileNet Content Manager để xem cách IBM FileNet P8 tích hợp nội dung, quy trình và tuân thủ theo luồng, quản lý và tối ưu hóa quy trình xử lý yêu cầu bồi thường tự động.
  • Tải về các phiên bản đánh giá sản phẩm của IBM và nhận các công cụ phát triển ứng dụng thực hành và các sản phẩm trung gian từ DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=752603
ArticleTitle=Tích hợp FileNet với IBM Content Manager, Phần 3: Triển khai thực hiện các trình diễn công việc dựa vào Component Integrator
publish-date=08192011