External task tutorial
Hi
I have tried to look everywhere for some tutorial or example on how to use external tasks (in Oracle BPM 10gr3). What must be done in the studio and what has to be done in the code. Does anyone have any examples or tutorials on how to use external tasks? What exactly means prepare method? Is it that when (external) client calls prepareExternalActivity()-method, this specified method in BPM-engine is executed. But how exactly this can be done?
Another question is that does Oracle BPM 10gr3 support asynchronous web services ? Can I call asynchronous web service from process?
Thanks for advance
Best Regards Tuomas
If you look at the Variables view on the left when editing your prepare method there should be an arguments section. An argument marked as an output argument in this method will be passed to the client when the prepare method is called. Passing a BPM Object will require a lot more code on the client side though, because those class definitions won't exist there. The simpler way is to pass out a Java object that is cataloged into BPM and have the same java class on the client side, or pass out a XML string that can be parsed by the client then.
Similar Messages
-
Interactive activity, external task example???
Hi,
I'm trying to search for a simple external task example, however it is totally imposible to find anything ... :(
I would like to make a few questions about it. When you create an external task in a interactive activity, you can specify an URL where the request will be redirected when you click on a external task, but how do you send the information about the specific process you want to work with in the URL? is it possible to pass parameters to this URL ? which is exactly the correct use of the external URL configuration? if I pass the control to an external system, how this system is able to know which BPM process instance to work with?
Regards,
Antonio.Hi,
I've recently found out that Aqualogic simply sends the information about the process as request parameters to the external system:
taskIn:0
activity:TareaExterna
instanceId:/ExpenseReport#Default-1.0/6/0
participantId:Peter Jones
Very easy, however it is quite frustrating not finding anything about it. I agree with you that it is an upcoming technology, however the documentation of a product should have a minimum of quality, specially coming from an important company as BEA. They offer a functionality and simply do not explain how it works.
In any case, thanks a lot for answering my question!! :)
Best regards,
Antonio. -
External task and Multiple-join
In a process, the order of activities is: Begin->interactive activity A -> multiple -> interactive activity B -> Join -> interactive activity C
This process has 2 instance variable, var1 and var2.
var1's type is BPMObject
var2's type is String.
PBL code in Mulitple is as follow.
---------------------------Multiple------------------------------
participants as Participant[]
ts as String[]
ts=var1.selectParticipants;
v as Int
v=length(ts)-1
for i2 in 0..v
do
participants(i2)=Participant.find(name : ts(i2))
end
for each p in participants do
copy = clone(this)
copy.participant.next = p
copy.var1.voteResult="O"
end
The main task type of interactive activity B is set to external.
The PBL code in the interactive activity B is as follow
------------------------interactive activity Prepare--------------------------------------------------------
var1.voteResult=arg1
arg2=var1.voteResult
arg1 and arg2 in this interactive activity are fine.
Interactive activity B does not have a commit method .
The PBL code in the Join is below.
---------------------------------------------------Join-----------------------------------------------
var2=var2+"*"+copy.var1.voteResult
I also try: this.var2=this.var2+"*"+copy.var1.voteResult
However, it only outputs *
It only output *. The number of * equals the number of branch.
The main task of Interactive activity C is an external task.
This activity only has a very simple prepare method: arg1=var2
arg 1 is the argument. I just want to see the value of var2. However, the value of var2 is just *
I cannot get the value of each branch.
How to get the correct value of each branch?I change the value type to Int. Then, it works.
How to get the value of String type? -
External Task - prepared and commit method
Hey guys,
I have a problem with External Task. I don't know how make a prepared and commit method for use with J2EE Application Server.
Anyone have an example?
tksI am having some issue with the Externhal Task prepare and commit method,
Actually I am ponting the interactive activity to external Task and in the external task i am getting instanceID , participantId and activity as query paramenters.Using those query paramemeters i am initalizing the ProcessServiceSession and then making call to prepareActivate Method as below.
I am getting query string instnaceId value like " %2FScorecardChallenge%23Default-1.0%2F4%2F0 " .
And I tried to call the IntsnaceID method InstanceId.getProcessId(instanceId), but this getProcessId method gives Null value.
Is there any idea why i am getting the Null processID value for the instanceIdString " %2FScorecardChallenge%23Default-1.0%2F4%2F0 ".
My sampel code looks like below ....
String instanceId = this.getRequest().getParameter("instanceId");
String activity = this.getRequest().getParameter("activity");
String participantId = this.getRequest().getParameter("participantId");
this.getRequest().setAttribute("activity",activity);
this.getRequest().setAttribute("isFromBpm","true");
try
System.out.println("########### BPM params" + instanceId + " : " + activity + " : " +participantId);
ProcessServiceSession bpmSession = ConnectPAPI.createSession(participantId,this.getRequest().getRemoteHost());
String pid=InstanceId.getProcessId(instanceId);
System.out.println("Process ID value "+ pid);
System.out.println("Instance ID value "+ InstanceId.getInstanceId(instanceId));
System.out.println("Instance ID value "+ InstanceId.getInstanceIn(instanceId));
if(bpmSession != null)
{ try{
Arguments args = bpmSession.activityPrepare(activity,instanceId,Arguments.create());
Map argument =(Map) args.getArguments();
Iterator it = argument.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
String key = (String)pairs.getKey();
Object value = pairs.getValue();
System.out.println("########### BPM args" + key + " : " + value + " : " );
But my problem here is I am getting null pointer exception like below ( I found that null pointer exception is coming because processID ivelue is null).
Stack Trace is output :
Process ID value null
Instance ID value %2FScorecardChallenge%23Default-1.0%2F4%2F0
Instance ID value -1
bpmSesssion instance details abstract class fuego.papi.ProcessServiceSesion
bpmSesssion instance is not null
java.lang.NullPointerException
at fuego.directory.DirDeployedProcess.isConsolidatedId(DirDeployedProcess.java:114)
at fuego.papi.impl.ProcessServiceSessionImpl.getProcessControl(ProcessServiceSessionImpl.java:2328)
at fuego.papi.impl.ProcessServiceSessionImpl.processGetInstance(ProcessServiceSessionImpl.java:1926)
at fuego.papi.impl.ProcessServiceSessionImpl.activityPrepare(ProcessServiceSessionImpl.java:1128)
at com.rollsroyce.gsp.poc.samplePOC.SamplePOCController.begin(SamplePOCController.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:879)
at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809)
at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478)
at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306)
at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:336)
at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:52)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201(PageFlowRequestProcessor.java:97)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunner.execute(PageFlowRequestProcessor.java:2044)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:64)
at org.apache.beehive.netui.pageflow.interceptor.action.ActionInterceptor.wrapAction(ActionInterceptor.java:184)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:50)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:58)
at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionInterceptors.wrapAction(ActionInterceptors.java:87)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:2116)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:556)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:853)
at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:631)
at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:158)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
Please help me , is any knows the problem......................................... -
Hi Everyone,
Have any body used external task for an interactive activity. If any body have samples to call prepareExternalActivity() and commitExternalActivity( ) from a standalone java program please help?
ThanksHi Nick,
Thanks for help!
My bat file runs without any errors from external tasks in EDQ.
The account has full control on all the shared folders i am using.
My script:
set ss_temp_dir=D:\Datanomic\dnDirector\config\landingarea\EDQ_Notification
echo s1 > log.txt
set srm_analyzer_path=\\<appsrvr4>\d$\sba81\siebsrvr\BIN
echo s2 >>log.txt
COPY /Y \\<appsrvr1>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
COPY /Y \\<appsrvr2>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
COPY /Y \\<appsrvr3>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
:: The above copy is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
echo s3 >>log.txt
:: log s1-s2-s3 created in commandarea.
setLocal DisableDelayedExpansion
pushd \\<sharedloc>\siebfile\FDR\
setLocal EnableDelayedExpansion
echo s4 >>log.txt
for /f "tokens=* delims= " %%G in ('dir/b/od T*.fdr') do (set newest=%%G)
echo s5 >>log.txt
copy %newest% %ss_temp_dir%
echo s6 >>log.txt
:: log s4-s5-s6 created in \\<sharedloc>\siebfile\FDR\
pushd %ss_temp_dir%
echo s7 >>log.txt
for %%F in (%ss_temp_dir%\*.fdr) do (
::set outfile=%ss_temp_dir%\%%~nF.csv &&
%srm_analyzer_path%\sarmanalyzer.exe -o %ss_temp_dir%\Snapshot_Working_CSV.csv -x -f %%F
:: The above saqrm_analyzer is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
echo s8 >>log.txt
MOVE /Y %ss_temp_dir%\*.fdr %ss_temp_dir%\BU\
echo s9 >>log.txt
:: The above move is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
::Log s7-s8-s9 created in %ss_temp_dir%
Thanks,
Sid -
Team, can you someone help me on External Task.
I see Command, Working Directory and Arguments on External Task.
Header 1
Header 2
Command
java -jar jmxtools.jar runjob -job TestProject -project ABC -u dnadmin localhost:8090
Working Directory
\opt\local\software\edq\tools
Arguments
I am getting error "....... is not located in one of the designated command areas.
I tried even specified like below still no luck, someone please help me with this.. Thanks in advance!!!
Header 1
Header 2
Command
java -jar jmxtools.jar runjob
Working Directory
\opt\local\software\edq\tools
Arguments
-job TestProject -project ABC -u dnadmin localhost:8090
Thanks in advance!Hi,
See the online help section on external tasks - particularly the section regarding security considerations.
I suggest you put your "java -jar jmxtools.jar ........." command in a batch/file and drop this in the config/commandarea folder. Use the name of the batch file/script as the 'command' parameter of the executable external task.
regards,
Nick -
External task - run batch file as administrator
Hi,
My name is Sid. I am working on developing an EDQ project to parse a collection of log files.
I have run into a roadblock on the first step!
My EDQ server is on a Windows Server 2008 platform.
I am calling a batch file that copies these log files between two locations.
The batch file copies the files fine when i run it as administrator from the commandarea in EDQ server, but it does not work when called from the External Tasks in EDQ.
I tried using the runas user:/Administrator in the batch file but that does not work either.
Would greatly appreciate any pointers in this regard.
Thank You,
SidWith runas you in fact logon to another seesion. So cmd is started with his own starting directory (being where it is located, system32).
I would recommend never to rely on the working dir for a batch file or script, but to always include the full path to the needed command/executables. If needed you can use environment variables to get the pathes of user-customised folders (for example the %usersprofile% variable).
Using .lnk files (normal shortcuts) you can specify the working dir to start in if you would really need that functionality.
MCSA/MCTS/MCP -
Hello everyone, Can someone provide me some samples of using External Tasks (External Executables and File Download). Thanks in advance!
Hi,
File download tasks should be self-explanatory.
One note is that you can use file:// syntax to get files from the network... for example:
URL: file://servername/directory/subfolder/filename.type
Filename: targetfilename.type
External tasks are more variable and tend to vary by O/S. The actual task itself will normally simply call an executable script. An example is the Dow Jones Watchlist external task that comes with Oracle Watchlist Screening that calls a script in the commandarea of the EDQ config directory.
The external task simply runs the stated script and the job manager works with its exit status.
Regards,
Mike -
External Task not working from job
Hi,
I am trying to call a batch file which copied fdr files from one folder to another and runs sarmanalyzer to generate csv files in the edq landing area.
The batch file is working fine when called from command prompt or double clicked in the edq server, but does not work as expected when called from project or job.
I generated a log file which confirms that the log file is being executed by the job to the last line, but the file copying and sarmanalyzer commands simply do not work.
Any pointers are greatly appreciated.
Thanks,
SidHi Nick,
Thanks for help!
My bat file runs without any errors from external tasks in EDQ.
The account has full control on all the shared folders i am using.
My script:
set ss_temp_dir=D:\Datanomic\dnDirector\config\landingarea\EDQ_Notification
echo s1 > log.txt
set srm_analyzer_path=\\<appsrvr4>\d$\sba81\siebsrvr\BIN
echo s2 >>log.txt
COPY /Y \\<appsrvr1>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
COPY /Y \\<appsrvr2>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
COPY /Y \\<appsrvr3>\d$\sba81\siebsrvr\BIN\*.fdr \\qssdvucmgtw301\siebfile\FDR
:: The above copy is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
echo s3 >>log.txt
:: log s1-s2-s3 created in commandarea.
setLocal DisableDelayedExpansion
pushd \\<sharedloc>\siebfile\FDR\
setLocal EnableDelayedExpansion
echo s4 >>log.txt
for /f "tokens=* delims= " %%G in ('dir/b/od T*.fdr') do (set newest=%%G)
echo s5 >>log.txt
copy %newest% %ss_temp_dir%
echo s6 >>log.txt
:: log s4-s5-s6 created in \\<sharedloc>\siebfile\FDR\
pushd %ss_temp_dir%
echo s7 >>log.txt
for %%F in (%ss_temp_dir%\*.fdr) do (
::set outfile=%ss_temp_dir%\%%~nF.csv &&
%srm_analyzer_path%\sarmanalyzer.exe -o %ss_temp_dir%\Snapshot_Working_CSV.csv -x -f %%F
:: The above saqrm_analyzer is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
echo s8 >>log.txt
MOVE /Y %ss_temp_dir%\*.fdr %ss_temp_dir%\BU\
echo s9 >>log.txt
:: The above move is not working from EDQ - no files copied - running the commands from cmd or double clicking the bat works fine for all commands.
::Log s7-s8-s9 created in %ss_temp_dir%
Thanks,
Sid -
External task - prepare method - decode-encode
In the prepare method, I write code refer to thread:
How to invoke a java application in the middle of the process
Using Papi to operate with process
How to invoke a java application in the middle of the process
If the error is caused by decoding and encodeing the URL, please tell me how to fix this problem.
Thanks a lot.
The code snippet as follows
-------------------code-----------------------------------------------
package getinstance;
import fuego.lang.DynamicObject;
import fuego.papi.Arguments;
import fuego.papi.CommunicationException;
import fuego.papi.InstanceInfo;
import fuego.papi.ProcessService;
import fuego.papi.ProcessServiceSession;
import fuego.papi.OperationException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public class prepare {
public prepare() {
public static void main(String[] args) {
prepare prepare = new prepare();
Properties configuration = new Properties();
configuration.setProperty(ProcessService.DIRECTORY_ID, "default");
configuration.setProperty(ProcessService.DIRECTORY_PROPERTIES_FILE, "D:\\BPM_HOME_standalone\\webapps\\papiws\\WEB-INF\\directory.xml");
configuration.setProperty(ProcessService.WORKING_FOLDER, "/tmp");
System.out.println("1111111111111");
Arguments argumentsResult = Arguments.create();
String taskIn = "0";
//String activity = "/InvokeJavaProcess#Default-1.0/InteractiveJava"; //both are fine
String activity = "InteractiveJava"; //both are fine
String instanceId = "/InvokeJavaProcess#Default-1.0/203/0";
try {
ProcessService processService = ProcessService.create(configuration);
ProcessServiceSession session = processService.createSession("jcooper", "welcome1", "host");
System.out.println("33333 instanceID="+instanceId);
argumentsResult = session.activityPrepare(activity, instanceId, Arguments.create()); // error starts from here
System.out.println("444444444");
DynamicObject obj = argumentsResult.getDynamicObject();
Map fieldMaps = obj.asFieldsMap();
for (Iterator<String> iterator = fieldMaps.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
System.out.println("key : "+ key + "value" +obj.getField(key));
DynamicObject obj2 = argumentsResult.getDynamicObject();
Map fieldMaps2 = obj2.asFieldsMap();
for (Iterator<String> it = fieldMaps2.keySet().iterator(); it.hasNext();) {
System.out.println("key : "+ key + " value : "+ obj2.getField(key));
session.close();
} catch (OperationException e) {
e.printStackTrace();
But I get errors like follow:
-------------------error---------------------------------------
E:\Jdeveloper10131_20090318\jdk\bin\javaw.exe -client -classpath E:\Jdeveloper10131_20090318\jdev\mywork\Java_be_invoked\getInstance\classes;D:\BPM_HOME_standalone\client\papi\lib\fuegopapi-client.jar getinstance.prepare
1111111111111
Creating connector [fuego:SQL]
Creating ProcessService with id 'oracle/2009-03-31 18:08:47+08:00'.
Local folder /tmp\system\Schema3387192-1796619082\catalogs found.
Loading catalogs from local folder: /tmp\system\Schema3387192-1796619082\catalogs
1 jars found locally.
Local jar '126' succesfully loaded.
[CatalogMgrCache] =======================
Registering CatalogMgr [oracle/2009-03-31 18:08:47+08:00] ...CatalogManagerCache 14949315:
Managers:
Counters:
[CatalogMgrCache] =======================
CatalogMgr [oracle/2009-03-31 18:08:47+08:00] REGISTERED!CatalogManagerCache 14949315:
Managers:
{oracle/2009-03-31 18:08:47+08:00=fuego.util.LocalCatalogManager@1dacccc}
Counters:
ProcessService 'oracle/2009-03-31 18:08:47+08:00' created successfully.
33333 instanceID=/InvokeJavaProcess#Default-1.0/203/0
Unreachable Engine Tolerance (seconds):
by default: 0
to be used: 0
This papi client will not cache exceptions which imply that an engine could not be reached.
Adding local catalog for project: 124
[CatalogLoaderMgrCache] =======================
CatalogClassLoader[oracle/2009-03-31 18:08:47+08:00-124] added to cache
Catalog ClassLoader MAP:
{oracle/2009-03-31 18:08:47+08:00-124=CatalogClassLoader(FuegoObjectCatalog(catalogIn: 124, directoryId: oracle/2009-03-31 18:08:47+08:00))}
Catalog Manager Cache:
CatalogManagerCache 14949315:
Managers:
{oracle/2009-03-31 18:08:47+08:00=fuego.util.LocalCatalogManager@1dacccc}
Counters:
{oracle/2009-03-31 18:08:47+08:00=1}
fuego.papi.exception.TaskFailedException: Task '0' in activity '/InvokeJavaProcess#Default-1.0/Interactive[InteractiveJava]' for instance '/InvokeJavaProcess#Default-1.0/203/0' could not be successfully executed. The task failed while executing method '%PREPARE%'.
at fuego.papi.exception.TaskFailedException.create(TaskFailedException.java:57)
at fuego.server.AbstractProcessBean.createTaskFailedException(AbstractProcessBean.java:3572)
at fuego.fengine.FEngineProcessBean.createTaskFailedException(FEngineProcessBean.java:398)
at fuego.server.AbstractProcessBean.runTask(AbstractProcessBean.java:3193)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fuego.lang.JavaClass.invokeMethod(JavaClass.java:1410)
at fuego.lang.JavaObject.invoke(JavaObject.java:227)
at fuego.component.Message.process(Message.java:585)
at fuego.component.ExecutionThread.processMessage(ExecutionThread.java:780)
at fuego.component.ExecutionThread.processBatch(ExecutionThread.java:755)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:142)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:134)
at fuego.fengine.FEngineProcessBean.processBatch(FEngineProcessBean.java:244)
at fuego.component.ExecutionThread.work(ExecutionThread.java:839)
at fuego.component.ExecutionThread.run(ExecutionThread.java:408)
at fuego.component.CustomExecution.next(CustomExecution.java:176)
at fuego.papi.impl.rmi.RMIExecution.next(RMIExecution.java:109)
at fuego.papi.impl.ProcessInstanceOperation.prepareExternalActivity(ProcessInstanceOperation.java:695)
at fuego.papi.impl.ProcessServiceSessionImpl.activityPrepare(ProcessServiceSessionImpl.java:1420)
at fuego.papi.impl.ProcessServiceSessionImpl.activityPrepare(ProcessServiceSessionImpl.java:1414)
at getinstance.prepare.main(prepare.java:43)
Caused by: fuego.lang.ComponentExecutionException: The method 'CIL_interactiveJavaPrepare' from class 'oracle.InvokeJavaProcess.Default_1_0.Instance' could not be successfully executed.
at fuego.component.ExecutionThreadContext.invokeMethod(ExecutionThreadContext.java:519)
at fuego.component.ExecutionThreadContext.invokeMethod(ExecutionThreadContext.java:273)
at fuego.fengine.FEEngineExecutionContext.invokeMethodAsCil(FEEngineExecutionContext.java:219)
at fuego.server.execution.EngineExecutionContext.runCil(EngineExecutionContext.java:1280)
at fuego.server.execution.TaskExecution.invoke(TaskExecution.java:401)
at fuego.server.execution.InteractiveNormalCilExecution.invoke(InteractiveNormalCilExecution.java:425)
at fuego.server.execution.TaskExecution.executeCIL(TaskExecution.java:513)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:697)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:657)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:154)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeNormalCil(InteractiveMicroActivity.java:501)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeItem(InteractiveMicroActivity.java:454)
at fuego.server.execution.microactivity.InteractiveMicroActivity.execute(InteractiveMicroActivity.java:104)
at fuego.server.AbstractProcessBean$48.execute(AbstractProcessBean.java:3184)
at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
at fuego.server.AbstractProcessBean.runTask(AbstractProcessBean.java:3188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fuego.lang.JavaClass.invokeMethod(JavaClass.java:1410)
at fuego.lang.JavaObject.invoke(JavaObject.java:227)
at fuego.component.Message.process(Message.java:585)
at fuego.component.ExecutionThread.processMessage(ExecutionThread.java:780)
at fuego.component.ExecutionThread.processBatch(ExecutionThread.java:755)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:142)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:134)
at fuego.fengine.FEngineProcessBean.processBatch(FEngineProcessBean.java:244)
at fuego.component.ExecutionThread.work(ExecutionThread.java:839)
at fuego.component.ExecutionThread.run(ExecutionThread.java:408)
Caused by: java.lang.NullPointerException
at oracle.InvokeJavaProcess.Default_1_0.Instance.CIL_interactiveJavaPrepare(Instance.xcdl:1)
at oracle.InvokeJavaProcess.Default_1_0.Instance.CIL_interactiveJavaPrepare(Instance.xcdl)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fuego.component.ExecutionThreadContext.invokeMethod(ExecutionThreadContext.java:512)
... 34 more
Process exited with exit code 0.
----------------------------------------------------------------Hi Satinder,
This time I change something in the process.
1, the process still has 3 interactive activities: jcooperkeyin, tojava, Interactivejstein.
2, I create a BPMObject including amount (decimal, 2) , purpose
3, the main task of jcooperkeyin is a screenflow: set values to purpose and amount
4, tojava activity is external.
Prepare method name: tojavaprepare
method contents:
arg1.amount=var1.amount
arg1.purpose=var1.purpose
Commit method: tojavacommit
method contents:
var1.purpose=arg2.purpose
var1.amount=arg2.amount
5, I create an instance variable name var1 and its type is BPMObjec
6, the argument module is changed to out
7, I change the java prepare method code as you commend:
8, After I run the java prepare method, I get some new errors which as follow:
--------------------------code----------------------------------------------------
package getinstance;
import fuego.lang.Decimal;
import fuego.lang.DynamicObject;
import fuego.papi.Arguments;
import fuego.papi.CommunicationException;
import fuego.papi.InstanceInfo;
import fuego.papi.ProcessService;
import fuego.papi.ProcessServiceSession;
import fuego.papi.OperationException;
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public class prepare {
public prepare() {
public static void main(String[] args) {
prepare prepare = new prepare();
Properties configuration = new Properties();
configuration.setProperty(ProcessService.DIRECTORY_ID, "default");
configuration.setProperty(ProcessService.DIRECTORY_PROPERTIES_FILE, "D:\\BPM_HOME_standalone\\webapps\\papiws\\WEB-INF\\directory.xml");
configuration.setProperty(ProcessService.WORKING_FOLDER, "/tmp");
System.out.println("1111111111111");
Arguments argumentsResult = Arguments.create();
String taskIn = "0";
String activity = "tojava";
//String activity = "jcooperkeyin";
String processId = "/InvokeJava2#Default-1.0";
//String instanceId = "/InvokeJava2#Default-1.0/281/0";
Arguments arguments = Arguments.create();
DynamicObject dyn = DynamicObject.create();
dyn.setField("amount", new BigDecimal(100.0));
dyn.setField("purpose", "---------");
arguments.putArgument("var1", dyn);
try {
ProcessService processService = ProcessService.create(configuration);
ProcessServiceSession session = processService.createSession("jcooper", "welcome1", "host");
String ist="ist";
for (InstanceInfo instance : session.processGetInstances(processId)) {
System.out.println(" instance.getId()-> " + instance.getId());
ist=instance.getId();
System.out.println(" activity.getActivityId()-> " +instance.getActivityId());
System.out.println(" activity.getActivityName()-> " +instance.getActivityName());
System.out.println("----------111----------------------");
argumentsResult = session.activityPrepare(activity, instance.getId(), arguments); //error starts from here
System.out.println("-----2222-----------");
DynamicObject obj = argumentsResult.getDynamicObject();
Map fieldMaps = obj.asFieldsMap();
for (Iterator<String> iterator = fieldMaps.keySet().iterator(); iterator.hasNext();) {
String key = iterator.next();
System.out.println("key : "+ key + "value" +obj.getField(key));
DynamicObject obj2 = argumentsResult.getDynamicObject();
Map fieldMaps2 = obj2.asFieldsMap();
for (Iterator<String> it = fieldMaps2.keySet().iterator(); it.hasNext();) {
System.out.println("key : "+ key + " value : "+ obj2.getField(key));
System.out.println("444444444");
session.close();
} catch (OperationException e) {
e.printStackTrace();
---------------------new error------------------------------------------------------
E:\Jdeveloper10131_20090318\jdk\bin\javaw.exe -client -classpath E:\Jdeveloper10131_20090318\jdev\mywork\Java_be_invoked\getInstance\classes;D:\BPM_HOME_standalone\client\papi\lib\fuegopapi-client.jar;D:\BPM_HOME_standalone\client\papi\lib\b1base.jar;D:\BPM_HOME_standalone\client\papi\lib\b1oracle.jar;D:\BPM_HOME_standalone\client\papi\lib\b1util.jar getinstance.prepare
1111111111111
Creating connector [fuego:SQL]
Creating ProcessService with id 'oracle/2009-03-31 18:08:47+08:00'.
Local folder /tmp\system\Schema3387192-1796619082\catalogs found.
Loading catalogs from local folder: /tmp\system\Schema3387192-1796619082\catalogs
1 jars found locally.
Local jar '181' succesfully loaded.
[CatalogMgrCache] =======================
Registering CatalogMgr [oracle/2009-03-31 18:08:47+08:00] ...CatalogManagerCache 14949315:
Managers:
Counters:
[CatalogMgrCache] =======================
CatalogMgr [oracle/2009-03-31 18:08:47+08:00] REGISTERED!CatalogManagerCache 14949315:
Managers:
{oracle/2009-03-31 18:08:47+08:00=fuego.util.LocalCatalogManager@1dacccc}
Counters:
ProcessService 'oracle/2009-03-31 18:08:47+08:00' created successfully.
Unreachable Engine Tolerance (seconds):
by default: 0
to be used: 0
This papi client will not cache exceptions which imply that an engine could not be reached.
instance.getId()-> /InvokeJava2#Default-1.0/281/0
Adding local catalog for project: 181
activity.getActivityId()-> /InvokeJava2#Default-1.0/tojava
activity.getActivityName()-> tojava
----------111----------------------
[CatalogLoaderMgrCache] =======================
CatalogClassLoader[oracle/2009-03-31 18:08:47+08:00-181] added to cache
Catalog ClassLoader MAP:
{oracle/2009-03-31 18:08:47+08:00-181=CatalogClassLoader(FuegoObjectCatalog(catalogIn: 181, directoryId: oracle/2009-03-31 18:08:47+08:00))}
Catalog Manager Cache:
CatalogManagerCache 14949315:
Managers:
{oracle/2009-03-31 18:08:47+08:00=fuego.util.LocalCatalogManager@1dacccc}
Counters:
{oracle/2009-03-31 18:08:47+08:00=1}
Processing the synchronization information, instance '181:281:0' was updated.
fuego.papi.OperationException: Operation exception.
at fuego.papi.OperationException.wrap(OperationException.java:65)
at fuego.papi.impl.ProcessInstanceOperation.prepareExternalActivity(ProcessInstanceOperation.java:706)
at fuego.papi.impl.ProcessServiceSessionImpl.activityPrepare(ProcessServiceSessionImpl.java:1420)
at fuego.papi.impl.ProcessServiceSessionImpl.activityPrepare(ProcessServiceSessionImpl.java:1414)
at getinstance.prepare.main(prepare.java:58)
Caused by: fuego.rmi.RMIRuntimeException: Fuego RMI: Failure during the invocation. Check the exception chain for details.
at fuego.rmi.RemoteProxy.processBatch(RemoteProxy.java:192)
at fuego.component.ExecutorClient.dispatch(ExecutorClient.java:190)
at fuego.component.CustomExecution.next(CustomExecution.java:247)
at fuego.papi.impl.rmi.RMIExecution.next(RMIExecution.java:109)
at fuego.papi.impl.ProcessInstanceOperation.prepareExternalActivity(ProcessInstanceOperation.java:695)
... 3 more
Caused by: fuego.rmi.spi.SerializationException: Unable to receive the message because of a serialization error.
at fuego.rmi.spi.BaseConnection.send(BaseConnection.java:105)
at fuego.rmi.ServerCluster.send(ServerCluster.java:210)
at fuego.rmi.ServerCluster.sendResult(ServerCluster.java:461)
at fuego.rmi.ServerCluster.access$300(ServerCluster.java:43)
at fuego.rmi.ServerCluster$ClientRequest$1.put(ServerCluster.java:556)
at fuego.component.ExecutionThread.sendResult(ExecutionThread.java:532)
at fuego.component.ExecutionThreadContext.doClientInvoke(ExecutionThreadContext.java:695)
at fuego.component.ClientRemoteComponent.doInvocation(ClientRemoteComponent.java:303)
at fuego.component.ClientRemoteComponent.invokeRelayTo(ClientRemoteComponent.java:211)
at fuego.component.ExecutionRelayedThrowable.execute(ExecutionRelayedThrowable.java:109)
at fuego.server.execution.TaskExecution.handleExecutionRelayedThrowable(TaskExecution.java:816)
at fuego.server.execution.TaskExecution.handleComponentExecutionException(TaskExecution.java:767)
at fuego.server.execution.TaskExecution.executeCIL(TaskExecution.java:516)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:697)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:657)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:154)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeNormalCil(InteractiveMicroActivity.java:501)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeItem(InteractiveMicroActivity.java:454)
at fuego.server.execution.microactivity.InteractiveMicroActivity.execute(InteractiveMicroActivity.java:104)
at fuego.server.AbstractProcessBean$48.execute(AbstractProcessBean.java:3184)
at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
at fuego.server.AbstractProcessBean.runTask(AbstractProcessBean.java:3188)
at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fuego.lang.JavaClass.invokeMethod(JavaClass.java:1410)
at fuego.lang.JavaObject.invoke(JavaObject.java:227)
at fuego.component.Message.process(Message.java:585)
at fuego.component.ExecutionThread.processMessage(ExecutionThread.java:780)
at fuego.component.ExecutionThread.processBatch(ExecutionThread.java:755)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:142)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:134)
at fuego.fengine.FEngineProcessBean.processBatch(FEngineProcessBean.java:244)
at fuego.component.ExecutionThread.work(ExecutionThread.java:839)
at fuego.component.ExecutionThread.run(ExecutionThread.java:408)
... 8 more
Caused by: java.io.NotSerializableException: java.lang.Object
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at fuego.component.Message.writeObject(Message.java:653)
at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at fuego.component.Batch.writeObject(Batch.java:151)
at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at fuego.rmi.Packet.write(Packet.java:240)
at fuego.rmi.spi.BaseConnection.send(BaseConnection.java:102)
at fuego.rmi.ServerCluster.send(ServerCluster.java:210)
at fuego.rmi.ServerCluster.sendResult(ServerCluster.java:461)
at fuego.rmi.ServerCluster.access$300(ServerCluster.java:43)
at fuego.rmi.ServerCluster$ClientRequest$1.put(ServerCluster.java:556)
at fuego.component.ExecutionThread.sendResult(ExecutionThread.java:532)
at fuego.component.ExecutionThreadContext.doClientInvoke(ExecutionThreadContext.java:695)
at fuego.component.ClientRemoteComponent.doInvocation(ClientRemoteComponent.java:303)
at fuego.component.ClientRemoteComponent.invokeRelayTo(ClientRemoteComponent.java:211)
at fuego.component.ExecutionRelayedThrowable.execute(ExecutionRelayedThrowable.java:109)
at fuego.server.execution.TaskExecution.handleExecutionRelayedThrowable(TaskExecution.java:816)
at fuego.server.execution.TaskExecution.handleComponentExecutionException(TaskExecution.java:767)
at fuego.server.execution.TaskExecution.executeCIL(TaskExecution.java:516)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:697)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:657)
at fuego.server.execution.TaskExecution.executeTask(TaskExecution.java:154)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeNormalCil(InteractiveMicroActivity.java:501)
at fuego.server.execution.microactivity.InteractiveMicroActivity.executeItem(InteractiveMicroActivity.java:454)
at fuego.server.execution.microactivity.InteractiveMicroActivity.execute(InteractiveMicroActivity.java:104)
at fuego.server.AbstractProcessBean$48.execute(AbstractProcessBean.java:3184)
at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
at fuego.server.AbstractProcessBean.runTask(AbstractProcessBean.java:3188)
at sun.reflect.GeneratedMethodAccessor52.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at fuego.lang.JavaClass.invokeMethod(JavaClass.java:1410)
at fuego.lang.JavaObject.invoke(JavaObject.java:227)
at fuego.component.Message.process(Message.java:585)
at fuego.component.ExecutionThread.processMessage(ExecutionThread.java:780)
at fuego.component.ExecutionThread.processBatch(ExecutionThread.java:755)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:142)
at fuego.component.ExecutionThread.doProcessBatch(ExecutionThread.java:134)
at fuego.fengine.FEngineProcessBean.processBatch(FEngineProcessBean.java:244)
at fuego.component.ExecutionThread.work(ExecutionThread.java:839)
at fuego.component.ExecutionThread.run(ExecutionThread.java:408)
Process exited with exit code 0. -
I'm trying to use the implementation type "External" of interactive activities, but I'm having some difficulties. I don't understand how I make the client, also I don't know how the BPM engine knows whom to call.
Does anyone have any sample project that can send me?
Rodrigo ZuchettoHi Rodrigo
You can follow the following steps
In BPM
1. Under External Resource, create a new resource of type 'Server Configuration'. Specify your host, port and the servlet/jsp path.
2. For the main task of interactive activity, choose implementaion type as 'External'.
3. Create a prepare and commit method. Prepare method will be called from your servlet, and you can define arguments (as output args) that will be passed from BPM to your external java app
4. Commit method will be called from your java app, once you are done with the processing. You can define args (as input) here. These args will be set from java app when it calls this commit method.
In JavaApp
1. For the servlet you define in step 1 above, define a default handler and initialize a papi session here.
2. Call activityPrepare on this papisession, and get hold of the variables passed from step 3 above
3. Do your processing
4. Call activityCommit on the papisession and pass back the parameters
HTH -
BPEL Human task Tutorial 10.1.3.5 SOA
Hi,
I have been tasked with setting up an example of BPEL human task workflow working on SOA application server 10.1.3.5.
Does anyone have any examples of this? I would prefer something that is stand-alone and not dependent on other creations or deployments. I found one for 11g however I need to have it used on SOA app server, not WebLogic. I wouldn't mind following this guide below, but I am unable to find out how to use JDev11g to deploy on SOA 10g app server.
http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10275/intro.htm
Thank you for any help / support.
MikeHi,
Thanks for that. In here is what I found on the web also, OrderBooking which is a large application. The 11g example just streamlines the process with just the BPEL "human task" example which is what I was tasked to do.
Thanks though -
If I set the implementation of an interactivie activity to external, there is checkbox in the dialogue named configuration. Is it for OSB?
The checkbox is to specify whether or not to invoke the external application whose url is obtained using the configuration name selected in the drop down. These configuration names are specified beforehand in the 'External Resources' section of the project.
For example, you can set an external resource 'yahoo' as http://www.yahoo.com and then in your external activity you can check the checkbox and choose 'yahoo' as the configuration to use. WHen you execute this activity. yahoo.com would show up in your browser. -
please help...
You may have installed the "Genieo" or "InstallMac" ad-injection malware. Follow the instructions on this Apple Support page to remove it.
Back up all data before making any changes.
Besides the files listed in the linked support article, you may also need to remove this file in the same way:
~/Library/LaunchAgents/com.genieo.completer.ltvbit.plist
If there are other items with a name that includes "Genieo" or "genieo" alongside any of those you find, remove them as well.
One of the steps in the article is to remove malicious Safari extensions. Do the equivalent in the Chrome and Firefox browsers, if you use either of those. If Safari crashes on launch, skip that step and come back to it after you've done everything else.
If you don't find any of the files or extensions listed, or if removing them doesn't stop the ad injection, then you may have one of the other kinds of adware covered by the support article. Follow the rest of the instructions in the article.
Make sure you don't repeat the mistake that led you to install the malware. Chances are you got it from an Internet cesspit such as "Softonic" or "CNET Download." Never visit either of those sites again. You might also have downloaded it from an ad in a page on some other site. The ad would probably have included a large green button labeled "Download" or "Download Now" in white letters. The button is designed to confuse people who intend to download something else on the same page. If you ever download a file that isn't obviously what you expected, delete it immediately.
In the Security & Privacy pane of System Preferences, select the General tab. The radio button marked Anywhere should not be selected. If it is, click the lock icon to unlock the settings, then select one of the other buttons. After that, don't ignore a warning that you are about to run or install an application from an unknown developer.
Still in System Preferences, open the App Store or Software Update pane and check the box marked
Install system data files and security updates
if it's not already checked. -
I am using both PSE 13 and Lightroom 5. When I use Lightroom as an external editor and save the photo, it shows up in PSE13 as an edited file but does not look any different. Why doesn't it appear edited?
People who have Photoshop, but don't have Lightroom, need ACR so that they can use Raw files. Without ACR they could do nothing with those (they may also like having ACR so that they can work on other kinds of image using the same kinds of adjustments and techniques, as are used with Raw files).
People who have Lightroom, can get access to Raw files regardless whether ACR is present or not. They can use Lightroom on other kinds of image also, using the same methods. LR can pass images directly into Photoshop without passing via ACR (or else does so transparently, which amounts to substantially the same thing).
ACR does not, strictly speaking, even need to be installed for this external editing to happen. In fact, not even PS needs to be - since a different image editor can be used instead, while still retaining the Adobe Raw conversion etc.
Lightroom "subcontracts out" specialised external tasks, in this workflow, but is still your "main contractor": the image is otherwise located, viewed, managed, adjusted/presented and output entirely using LR.
So IMO we can divide image processing into:
operations that involve pixels and layers and layer masks and adjustment layers etc (of the kind done inside Photoshop)
operations that involve parametric edits (of the kind done in ACR where you are not using a Lightroom based workflow; otherwise, done inside Lightroom)
When PS is called in, that's because those tasks are impossible or unsuitable to do in Lightroom. But those tasks can't be done in ACR either - by definition, since LR and ACR have exactly the same image processing "feature set".
Lightroom is irrelevant to the Bridge + ACR + PS workflow. This workflow requires both your PS and your ACR to be current enough, to support your Raw format etc.
ACR and Bridge are irrelevant to the LR + (image editor) workflow. It is in this case, only LR which needs to be current enough to support your Raw format etc.
RP
Maybe you are looking for
-
IPhone 4 battery life, Why does it die so fast and what can I do?
I have had an iPhone 4 for a little over two years now and feel like recently, my battery is dying so fast. When I go out for the day it always dies before I get home, what I think it is, could be that I take a lot of pictures and use many picture ap
-
I've downloaded IOS 6 but I have ended up with the wrong apple ID on the apps store and iTunes, I can't seem to change it. Can someone tell me how?
-
Error itunes is running in compatibily mode. The icon on the computer went bigger. And I known is not. That happens when upgrade. The icon on the computer went bigger. Please help.
-
Here is a tool to easily package a swf for AIR 2.6!
Hi all, I have written a win32 app to compile your swf for iOS using AIR 2.6. It basically is a replacement for the iPhone settings in CS5. It means you don't have to use the command line ADT or compile scripts, and it writes the app descriptor XML f
-
TS3212 how to dowload 10.6.3
from my download file..it automatically puts it in a folder and my itunes is not showing an update and now i can not even open itunes because the computer says it can not read because of a newer version