{"id":3543,"date":"2012-02-03T15:25:56","date_gmt":"2012-02-03T20:25:56","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=3543"},"modified":"2012-02-03T15:25:56","modified_gmt":"2012-02-03T20:25:56","slug":"soa-11g-human-workflow-overview","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=3543","title":{"rendered":"SOA 11g: Human Workflow Overview"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Concepts\">Concepts<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Design_and_Runtime_Concepts\">Design and Runtime Concepts<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Features\">Features<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Use_Cases\">Use Cases<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Architecture\">Architecture<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Human_Workflow_Services\">Human Workflow Services<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#How_to_Use_Human_Task\">How to Use Human Task<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Human_Task_Service_Engine\">Human Task Service Engine<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#References\">References<\/a>\n\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<span id=\"Concepts\"><h2>Concepts<\/h2><\/span>\n<span id=\"Design_and_Runtime_Concepts\"><h3>Design and Runtime Concepts<\/h3><\/span>\n<span id=\"Task_Assignment_and_Routing\"><h4>Task Assignment and Routing<\/h4><\/span>\n<p>* Supports <em>declarative <\/em>assignment and routing of tasks.<br \/>\n* Participant: a user or group of users in the assignment and routing policy definition.<br \/>\n* Participant type:<br \/>\n&#8211; Single approver<br \/>\n&#8211; Parallel (commonly used for voting)<br \/>\n&#8211; Serial (e.g. escalation chain)<br \/>\n&#8211; FYI<br \/>\n* Participate assignment:<br \/>\n&#8211; Users<br \/>\n&#8211; Groups<br \/>\n&#8211; Application roles<br \/>\n* Ad hoc routing<br \/>\n* Outcome-based completion of routing flow (complete without finishing rest of steps).<\/p>\n<span id=\"Static_Dynamic_and_Rule-Based_Task_Assignment\"><h4>Static, Dynamic, and Rule-Based Task Assignment<\/h4><\/span>\n<p>* Assign tasks statically.<br \/>\n&#8211; A single user, group, or role.<br \/>\n&#8211; A comma delimited string of above.<br \/>\n* Assign tasks dynamically.<br \/>\n* Assign tasks with business rules.<\/p>\n<span id=\"Task_Stakeholders\"><h4>Task Stakeholders<\/h4><\/span>\n<p>* Owner<br \/>\n* Initiator<br \/>\n* Reviewer<br \/>\n* Admin<br \/>\n* Error Assignee<\/p>\n<span id=\"Task_Deadlines\"><h4>Task Deadlines<\/h4><\/span>\n<p>* Reminders<br \/>\n* Escalation<br \/>\n* Expiration<br \/>\n* Renewal<\/p>\n<span id=\"Notifications\"><h4>Notifications<\/h4><\/span>\n<p>* Email<br \/>\n* Voice message<br \/>\n* IM<br \/>\n* SMS<\/p>\n<span id=\"Task_Forms\"><h4>Task Forms<\/h4><\/span>\n<p>* Can be created in JSF, .NET, or any other client technologies using APIs.<br \/>\n* Can be auto-generated using ADF.<\/p>\n<span id=\"Advanced_Concepts\"><h4>Advanced Concepts<\/h4><\/span>\n<p>* Rule-based routing<br \/>\n* Rule-based participant assignment<br \/>\n* Stages: A stage is a way of organizing the approval process for blocks of participant types.<br \/>\n* Access rules<br \/>\n* Callbacks (extension hooks)<\/p>\n<span id=\"Reports_and_Audit_Trails\"><h4>Reports and Audit Trails<\/h4><\/span>\n<p>* Out-of-box reports for task analysis:<br \/>\n&#8211; Unattended tasks<br \/>\n&#8211; Tasks priority: Analysis of tasks assigned to a user, reportees, or their groups, based on priority.<br \/>\n&#8211; Tasks cycle time: Analysis of the time taken to complete tasks from assignment to completion based on users&#8217; groups or reportees&#8217; groups.<br \/>\n&#8211; Tasks productivity: Analysis of assigned tasks and completed tasks in a given time period for a user, reportees, or their groups.<br \/>\n&#8211; Tasks time distribution: The time an assignee takes to perform a task.<br \/>\n* Audit trails lists all versions created by the following tasks:<br \/>\n&#8211; Initiate task<br \/>\n&#8211; Reinitiate task<br \/>\n&#8211; Update outcome of task<br \/>\n&#8211; Completion of task<br \/>\n&#8211; Erring of task<br \/>\n&#8211; Expiration of task<br \/>\n&#8211; Withdrawal of task<br \/>\n&#8211; Alerting of task to the error assignee<\/p>\n<span id=\"Features\"><h2>Features<\/h2><\/span>\n<span id=\"Use_Cases\"><h3>Use Cases<\/h3><\/span>\n<p>* Task assignment to a user or role.<br \/>\n* Use of various participant types.<br \/>\n* Escalation, expiration, and delegation.<br \/>\n* Automatic assignment and delegation. e.g. auto-route to direct report managers.<br \/>\n* Dynamic assignment of users based on task content. e.g. orders larger than 5k needs director approval.<\/p>\n<span id=\"Architecture\"><h2>Architecture<\/h2><\/span>\n<p>* Starting with release 11g, all human task metadata is stored and managed in the Metadata Service (MDS) repository.<\/p>\n<span id=\"Human_Workflow_Services\"><h3>Human Workflow Services<\/h3><\/span>\n<p>* Task service:<br \/>\n&#8211; task state and persistence management.<br \/>\n&#8211; exposes operations to update a task, complete a task, escalate and reassign tasks, and so on.<br \/>\n&#8211; used by Oracle BPM Worklist to retrieve tasks assigned to users.<br \/>\n&#8211; determines if notifications are to be sent to users and groups when the state of the task changes.<br \/>\n&#8211; Consists of:<br \/>\n~ Task routing service.<br \/>\n~ Task query service.<br \/>\n~ Task metadata service.<br \/>\n* Identity service:<br \/>\n&#8211; a thin web service layer on top of the Oracle WebLogic Server 11g security infrastructure or any custom user repository.<br \/>\n&#8211; enables authentication and authorization of users and the lookup of user properties, roles, group memberships, and privileges.<br \/>\n* Notification service.<br \/>\n* Metadata service: manages metadata related to workflow users, such as user work queues, preferences, vacations, and delegation rules.<br \/>\n* Runtime config service:<br \/>\n&#8211; provides methods for managing metadata used in the task service runtime environment.<br \/>\n&#8211; It principally supports management of task payload mapped attribute mappings.<br \/>\n* Evidence service: supports storage and nonrepudiation of digitally-signed workflow tasks.<\/p>\n<span id=\"\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svcs.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svcs-300x220.gif\" alt=\"\" title=\"soa11g_humanflow_svcs\" width=\"300\" height=\"220\" class=\"aligncenter size-medium wp-image-3521\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svcs-300x220.gif 300w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svcs.gif 614w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h6><\/span>\n<span id=\"_1\"><h6><a href=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svc_interations.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svc_interations-277x300.gif\" alt=\"\" title=\"soa11g_humanflow_svc_interations\" width=\"277\" height=\"300\" class=\"aligncenter size-medium wp-image-3522\" srcset=\"https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svc_interations-277x300.gif 277w, https:\/\/jianmingli.com\/wp\/wp-content\/uploads\/2011\/09\/soa11g_humanflow_svc_interations.gif 647w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/a><\/h6><\/span>\n<span id=\"How_to_Use_Human_Task\"><h3>How to Use Human Task<\/h3><\/span>\n<p>* Associated with a BPEL process.<br \/>\n* Standalone human task:<br \/>\n&#8211; Not associated with a BPEL process.<br \/>\n&#8211; Client can create the task themselves.<\/p>\n<span id=\"Human_Task_Service_Engine\"><h3>Human Task Service Engine<\/h3><\/span>\n<p>* All human task service components, regardless of the SOA composite application of which they are a part, are executed in a single human task service engine.<\/p>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"http:\/\/download.oracle.com\/docs\/cd\/E17904_01\/integration.1111\/e10224\/bp_introhwf.htm\">Getting Started with Human Workflow<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Design and Runtime Concepts Task Assignment and Routing * Supports declarative assignment and routing of tasks. * Participant: a user or group of users in the assignment and routing policy definition. * Participant type: &#8211; Single approver &#8211; Parallel &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=3543\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[100],"tags":[],"class_list":["post-3543","post","type-post","status-publish","format-standard","hentry","category-soa11g"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-V9","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3543"}],"version-history":[{"count":6,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3543\/revisions"}],"predecessor-version":[{"id":4241,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/3543\/revisions\/4241"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}