Login service precondition:
<process:hasPrecondition>
	<expr:SWRL-Condition rdf:ID="UsernameAsEmail">
		<rdfs:label>parseEmail(Username)</rdfs:label>
		<expr:expressionLanguage rdf:resource="&expr;#SWRL"/>
			<expr:expressionObject>
				<swrl:AtomList>
					<rdf:first>
						<swrl:IndividualPropertyAtom>
							<swrl:propertyPredicate rdf:resource="#parseEmail"/>
							<swrl:argument1 rdf:resource="#Username"/>
						</swrl:IndividualPropertyAtom>
					</rdf:first>
					<rdf:rest rdf:resource="&rdf;#nil"/>
				</swrl:AtomList>
			</expr:expressionObject>
		</expr:SWRL-Condition>
</process:hasPrecondition>

Login service effects:
<process:hasResult>
	<process:Result>
		<process:inCondition>
			<expr:SWRL-Condition>member(User,Password)</expr:SWRL-Condition>
		</process:inCondition>
		<process:withOutput rdf:resource=#Ack>
			<valueType rdr:resource=#LoginAcceptMsg>
		</process:withOutput>
		<process:hasEffect>
			<expr:SWRL-Condition>loggedIn(Username,Password)</expr:SWRL-Condition>
		</process:hasEffect>
	</process:Result>
</process:hasResult>

The Mindswap's ow l-s (http://www.mindswap.org/2004/owl-s/api/) does not support for effects yet. I have modified the owl-s-nightly (http://www.mindswap.org/2004/owl-s/api/download/owl-s-nightly.zip) source code to support for conditional effects and ResultVar.

Now it support for owl-s effect like this:

<process:hasResult>
     <process:Result rdf:ID="TestResult">
       <process:hasResultVar>
         ...
       </process:hasResultVar>
       <process:inCondition>
         ...
       </process:inCondition>
       <process:hasEffect>
         ...
       </process:hasEffect>
     </process:Result>
</process:hasResult>

Here's the binary release:

http://linecong.googlepages.com/owl-s-pico.jar

and source code:

http://linecong.googlepages.com/pico-owl-s-src.rar

The essential modification to the source is simple, just add the function below and use it in executeAtomicProcess.

/**
  * Set the effect of process to be true,when its condition is satisfied
  *
  * @author linecong@gmail.com
  * @param process
  */
 private void setProcessEffect(Process process,ValueMap values){
  ResultList resultList = process.getResults();
     for(int i = 0;i < resultList.size();i++){
      Result rst = resultList.resultAt(i);
      List resultVarMap = null;
      ParameterList resultVars = rst.getParameters();
      ConditionList cl = rst.getConditions();
      boolean satisfied = false;
      if(cl.size() == 0)
       satisfied = true;
      else
       for(int j = 0;j < cl.size();j++){
        AtomList atoms = cl.conditionAt(j).getBody();
        //System.out.println(values);
        atoms = atoms.apply(values);
        ABoxQuery query = atoms.toQuery(resultVars);
        resultVarMap = env.query(query);
        if(cl.conditionAt(j).isTrue(env,values)){
         satisfied = true;
         break;
        }
       }
      if(!satisfied)
       continue;
      OWLIndividualList list = rst.getEffects();
      for(int j = 0;j < list.size();j++){
       Expression expr = (Expression)list.individualAt(j);
       AtomList atomList = expr.getBody();
       atomList = atomList.apply((ValueMap)resultVarMap.get(0));
       for(int k = 0;k < atomList.size();k++){
        IndividualPropertyAtom property = (IndividualPropertyAtom)atomList.atomAt(k);
        process.getService().getOntology().addProperty(property.getArgument1(),
         property.getPropertyPredicate(),property.getArgument2());
        if(DEBUG) System.out.println(property.getPropertyPredicate().getURI());
       }
      }
     }
 }
 
 
 
 <rdf:RDF>
<process:AtomicProcess rdf:about="#getMessages">
<process:name>getMessages</process:name>
<process:hasInput>
<process:Input rdf:about="#SystemID">
<process:parameterType>&xsd;#string</process:parameterType>
</process:Input>
</process:hasInput>
<process:hasInput>
<process:Input rdf:about="#SessionID">
<process:parameterType>&xsd;#string</process:parameterType>
</process:Input>
</process:hasInput>
<process:hasOutput>
<process:Output rdf:about="#Messages">
<process:parameterType>#ArrayOfMessage</process:parameterType>
</process:Output>
</process:hasOutput>
<process:hasPrecondition>
<expr:SWRL-Condition>
<expr:expressionBody rdf:parseType="Literal">
<swrl:AtomList>
<rdf:first>
<swrl:DatavaluedPropertyAtom>
<swrl:propertyPredicate rdf:resource="#loggedIn"/>
<swrl:argument1 rdf:resource="#TheWebAppUser" />
<swrl:argument2>true</swrl:argument2>
</swrl:DatavaluedPropertyAtom>
</rdf:first>
<rdf:rest rdf:resource="&rdf;#nil"/>
</swrl:AtomList>
</expr:expressionBody>
</expr:SWRL-Condition>
</process:hasPrecondition>
</process:AtomicProcess>
</rdf:RDF>








<!ENTITY gloss "http://www.personal-reader.de/rdf/semwebglossary.owl">
<!ENTITY device "http://www.adaptationsrv.org/device.owl">
<!ENTITY content "http://www.adaptationsrv.org/content.owl">

<owl:Class rdf:ID="SupportedMarkupLanguage">
<owl:oneOf rdf:parseType="Collection">
<factbook:Language rdf:about="&glossary;#HTML"/>
<factbook:Language rdf:about="&glossary;#XHTML"/>
<factbook:Language rdf:about="&glossary;#XML"/>
<factbook:Language rdf:about="&glossary;#CHTML"/>
<factbook:Language rdf:about="&glossary;#WML"/>
</owl:oneOf>
</owl:Class>
<owl:ObjectProperty rdf:ID="canBeConvertedTo">
<rdfs:domain rdf:resource="#SupportedMarkupLanguage"/>
<rdfs:range rdf:resource="#SupportedMarkupLanguage"/>
</owl:ObjectProperty>
<rdf:Description rdf:about="&glos;#HTML"><canBeConvertedTo rdf:resource="&glos;#WML"/></rdf:Description>
<rdf:Description rdf:about="&glos;#HTML">< canBeConvertedTo rdf:resource="&glos;#XHTML"/></rdf:Description>
<rdf:Description rdf:about="&glos;#HTML">< canBeConvertedTo rdf:resource="&glos;#XML"/></rdf:Description>
<rdf:Description rdf:about="&glos;#HTML">< canBeConvertedTo rdf:resource="&glos;#cHTML"/></rdf:Description>
<rdf:Description rdf:about="&glos;#XML">< canBeConvertedTo rdf:resource="&glos;#XHTML"/></rdf:Description>

<process:Input rdf:ID="InputMarkupLanguage">
<process:parameterType rdf:datatype="&xsd;#anyURI">&content;#Content_Type
</process:parameterType>
</process:Input>
<process:Input rdf:ID="OutputMarkupLanguage">
<process:parameterType rdf:datatype="&xsd;#anyURI">&device;#Supported_Markup
</process:parameterType>
</process:Input>

<process:AtomicProcess rdf:ID="MarkupConverterProcess">
<process:hasInput rdf:resource="#InputMarkupLanguage"/>
<process:hasInput rdf:resource="#OutputMarkupLanguage"/>
<process:hasInput rdf:resource="#InputString"/>
<process:hasOutput rdf:resource="#OutputString"/>
<process:hasPrecondition rdf:resource="#SupportedConvertion"/>
<process:hasEffect rdf:resource= ="#MarkupLanguageConverted/>
</process:AtomicProcess>

<expr:SWRL-Condition rdf:ID="SupportedConvertion">
<rdfs:label>canBeConvertedTo(InputMarkupLanguage, OutputMarkupLanguage)</rdfs:label>
<expr:expressionLanguage rdf:resource="&expr;#SWRL"/>
<expr:expressionObject><swrl:AtomList><rdf:first>
<swrl:IndividualPropertyAtom>
<swrl:propertyPredicate rdf:resource="#canBeConvertedTo"/>
<swrl:argument1 rdf:resource="#InputMarkupLanguage"/>
<swrl:argument2 rdf:resource="#OutputMarkupLanguage"/>
</swrl:IndividualPropertyAtom>
</rdf:first></swrl:AtomList></expr:expressionObject>
</expr:SWRL-Condition>