Thứ Sáu, 17 tháng 5, 2013

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

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.

Không có nhận xét nào:

Đăng nhận xét