Languages that support object-oriented programming are now mainstream, and can support software reuse. This study focused on the reusability of components for workflow management systems (WfMSs). Implementing a WfMS in object-oriented programming languages without considering the characteristics of the WfMS does not ensure that all the components will be reusable. We first clarify the reusability of WfMSs and point out the difficulties in constructing reusable components for WfMSs. We then propose an object-oriented model for WfMSs named the "Java-based object-oriented WfMS" (JOO-WfMS), whose components are fine-grained and are classified into a functional stack with three layers. This extends the reusability of objects in developing workflow applications. The resulting architecture can support real-time flow control as well as the dynamic instantiation of objects. Two mechanisms are embedded into the JOO-WfMS to increase the reusability of its components: (1) a workflow failure-handling language, which can increase the reusability of activities when flexible failure recovery is necessary; and (2) the user communication components and their corresponding architecture. The goal of the architecture is to increase the reusability of codes used for communication between the user and the activities in WfMSs.