Currently, BPEL is the de-facto standard for the web service composition. Because web services are autonomous and loosely coupled, BPEL processes are susceptible to a wide variety of faults. However, BPEL only provides limited constructs for handling faults, which makes fault handling a time-consuming and error-prone task. In this paper, we propose a declarative approach to enhancing the reliability of BPEL processes. Our solution specifies fault handling logic through a set of Event-Condition-Action (ECA) rules which build on an extensible set of fault-tolerant patterns. These ECA rules are integrated with normal business logic before deployment to generate a fault-tolerant BPEL process. We also develop a GUI tool to assist designers to specify ECA rules. Experiments show our approach is feasible.