Wednesday, February 17, 2010

how to generate document, sign on it and send it in mail

Tuesday, February 16, 2010
eDelivery : generate a PDF and send that though email

Hi I got a requirement in underwriting application, to generate quote letter for insured and home office. send insured letter with signature digitally signed and email it the same to insured.


1.First splitted requirement like generate a pdf
2.add signature and date time stamp
3.email the same to different users..
How to achieve using java and iText library (open source):which works fine..Just wanted to share ..

package com.vasu.edelivery;
import java.awt.Color;
import java.io.FileOutputStream;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import com.lowagie.text.Anchor;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Chapter;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;import com.lowagie.text.Font;
import com.lowagie.text.List;import com.lowagie.text.ListItem;
import com.lowagie.text.Paragraph;import com.lowagie.text.Section;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
public class HomeOfficeCopy {
private static String FILE = "c:/vasu/tmp/HomeOfficeCopy.pdf";
private static Font catFont = new Font(Font.TIMES_ROMAN, 18, Font.BOLD);
private static Font redFont = new Font(Font.TIMES_ROMAN, 12, Font.NORMAL, Color.RED);
private static Font subFont = new Font(Font.TIMES_ROMAN, 16, Font.BOLD);
private static Font smallBold = new Font(Font.TIMES_ROMAN, 12, Font.BOLD);
public static void main(String[] args) {
try {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open(); addTitlePage(document); addContent(document);
document.close(); } catch (Exception e) { e.printStackTrace(); } }
private static void addTitlePage(Document document) throws DocumentException { Paragraph preface = new Paragraph(); // We add one empty line addEmptyLine(preface, 1); // Lets write a big header preface.add(new Paragraph("xyz Insurance", catFont));
addEmptyLine(preface, 1); // Will create: Report generated by: _name, _date preface .add(new Paragraph( "Report signed by: " +"\n"+ System.getProperty("user.name") + " , " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ smallBold)); addEmptyLine(preface, 3); preface.add(new Paragraph( "This document describes something which is very important ", smallBold));
addEmptyLine(preface, 8);
preface .add(new Paragraph( "This document is a preliminary version for HomeOffice and not subject to AIG ;-).", redFont));
document.add(preface); // Start a new page document.newPage(); }
private static void addContent(Document document) throws DocumentException { Anchor anchor = new Anchor("First Chapter", catFont); anchor.setName("First Chapter");
// Second parameter is the number of the chapter Chapter catPart = new Chapter(new Paragraph(anchor), 1);
Paragraph subPara = new Paragraph("Subcategory 1", subFont); Section subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph("Hello"));
subPara = new Paragraph("Subcategory 2", subFont); subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph("Paragraph 1")); subCatPart.add(new Paragraph("Paragraph 2")); subCatPart.add(new Paragraph("Paragraph 3")); // Add a little list createList(subCatPart);
// Add a small table createTable(subCatPart); // Now a small table
// Now add all this to the document document.add(catPart);
// Next section anchor = new Anchor("Second Chapter", catFont); anchor.setName("Second Chapter");
// Second parameter is the number of the chapter catPart = new Chapter(new Paragraph(anchor), 1);
subPara = new Paragraph("Subcategory", subFont); subCatPart = catPart.addSection(subPara); subCatPart.add(new Paragraph("This is a very important message")); // Now add all this to the document document.add(catPart);
}
private static void createTable(Section subCatPart) throws BadElementException { Table t = new Table(3,2);
t.setBorderColor(Color.GRAY); t.setPadding(4); t.setSpacing(4); t.setBorderWidth(1);
Cell c1 = new Cell("Table Header 1"); c1.setHeader(true); t.addCell(c1); c1 = new Cell("Table Header 2"); t.addCell(c1); c1 = new Cell("Table Header 3"); t.addCell(c1); t.endHeaders(); t.addCell("1.0"); t.addCell("1.1"); t.addCell("1.2"); t.addCell("2.1"); t.addCell("2.2"); t.addCell("2.3");
subCatPart.add(t);
}
private static void createList(Section subCatPart) { List list = new List(true, false, 10); list.add(new ListItem("First point")); list.add(new ListItem("Second point")); list.add(new ListItem("Third point")); subCatPart.add(list); }
private static void addEmptyLine(Paragraph paragraph, int number) { for (int i = 0; i < number; i++) { paragraph.add(new Paragraph(" ")); } }


public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException{
boolean debug = false;
//Set the host smtp address Properties props = new Properties();
props.put("mail.smtp.host", "smtp.jcom.net");
// create some properties and get the default Session Session session = Session.getDefaultInstance(props, null); session.setDebug(debug);
// create a message Message msg = new MimeMessage(session);
// set the from and to address InternetAddress addressFrom = new InternetAddress(from); msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]); }
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Optional : You can also set your custom headers in the Email if you Want msg.addHeader("MyHeaderName", "myHeaderValue");
// Setting the Subject and Content Type msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);}
}

Detailed installation procedure

1) crate tablespace
create tablespace pegatablespace
logging
datafile 'C:\oracle\product\10.2.0\oradata\orcl\pegadatafile.dbf'
size 100m
autoextend on
next 100m maxsize 3096m
extent management local;

2)create user
create user pegauser
identified by pegauser
default tablespace pegatablespace
temporary tablespace temp;

3) grant to user
grant resource,connect,dba to pegauser;

4) http://localhost:1158/em/console/logon/logon
system/oracle

5)go to Administration and click users and select pegauser and click on edit
and goto Roles and checl all AdminOptions and click on apply
then click on System Privileges then editlist
then select some privileges and click on apply then select Admin option for all and click Apply

6) Login as pegauser in sql+

7) copy oracledate_install0503.sql to C direcory and run sql> @C:\oracledate_install0503.sql;

8) set the classpath with java/lib, tomcat/lib under system variables

9) set the poolsize for tomcat/java

10) copy prdbutil.war from Training to tomcat/webapps
start tomcat then stop tomcat and delete prdb.util.war

11) create new folder with name pegatemp in C drive

12) open prconfig.xml in tomcat/webapps/prdbutil/web-inf/classes

13) change the value of explicittempdir to C:/pegatemp

14) add the env for oracle in prconfig to






15) copy classes12.jar from oracle/lib to tomcat/common/lib

16) http:\\localhost:8080\prdbutil
upload Training\pega\PRPCv5_v53_relcand_0049.jar
next, skip
enter ip and port
next, verify
next, exit
stop tomcat

17) copy prweb.war to tomcat/webapps

start tomcat and stop tomcat and delete prweb.war

18) copy prconfig.xml from tomcat/webapps/prdbutil/web-inf/classes and paste in tomcat/webapps/prweb/web-inf/classes

19) start tomcat
http:\\localhost:8080\prweb\PRServlet
xxxx@xxx.com pwd: xxxx
click on process

Monday, February 8, 2010

Pega PRPC

  1. Pega PRPC Installation procedure
  2. Change PRConfig.xml file settings
  3. Configure Workflow: HOW TO CREATE AN XPDL OR BPEL REPRESENTATION OF A FLOW RULE
1. Change PRConfig.xml file settings
Each node of a Process Commander cluster has a file named prconfig.xml that holds the configuration settings for an installation. The file is loaded on startup and to determine information including:

You can modify many of the default installation settings by accessing the prconfig.xml file as described below.

Stop the Process Commander application.
Undeploy the Process Commander application.
Extract the prconfig.xml file from one of the following locations:
If Process Commander is deployed as a Web application, locate and unzip the prweb.war file to a location that you have access to. Then extract the prconfig.xml file from the WEB_INF\classes directory.
If Process Commander is deployed as an enterprise application, locate and unzip the prresources.jar located in the APP-INF\lib directory. Then extract the prconfig.xml file from the .jar file.
Open the prconfig.xml file in a text editor.
Add the entries you need.
Save the file and repackage the modified prconfig.xml file into the prweb.war or prresources.jar file, as appropriate.
Redeploy Process Commander.

2.sample flow rule diagram
The standard Work-.New harness includes the standard CoreParty and PartyDisplay sections that your operators can use to add work parties on the New form of a work object.

1) create operators who uses workflow
2) create properties which are used in work flow
3)create activities used in workflow
5)Draw flow rule diagram using the stencils provided by pega business modellor
6) Go to Process Commander XML to see representation of the flow in XML.
7) You can also edit the xml to change flow or covert into BPEL or XPDL both are supported wfc standards.
8) Write supporting java classes for customised tasks and inherit them
9) You can configure email adapters, outlook connectors by using wizards or connectors of pega.We can also use integration capabilities like JMS,MQ,CORBA etc..if needed with legacy system communication in message routing.Also can generate services.
10) save your work flow and publish.


3.Pega PRPC Installation procedure:
Install JDK 1.5 or higher
Install SQL or Oracle DB
Run PEGARULES SCHEMA i.e .sql to create pega rule databases
Install Websphere or Jboss application server
Copy all jars prpc jars,commons logging jars,classes12.jar,xerces.jar under default\deploy\common\lib
Deploy prweb.war under \default\deploy\prweb
Open \default\deploy\prweb\WEB-INF\classes\pegarules.xml
Enable JDBC driver, change UserId,Passaword which were used for installation of oracle Start the Application server
Access server using the following URL: http://hostname:port/
Access server using the following URL: http://hostname:port/prweb/PRServlet
CLIENT side login with Admin rights
Install Microsft VISIO